Значи да започваме, така..., тази галерия се състои от 3 елемента това са:
Само да поясня, тази галерия ще има само малки изображения (thumbnaills), към който ще има прекрипен линк, тоест като я направите като цъкнете на някое изображение ще ви се отваря някаква страница, каквато искате.
I. Изготвяне на .swf файла със галерията
1. Отваряме нов документ на AS 2.0
2. Направете Stage Size: 800x400
Note: Размерът няма значение, защото колкото и да е голямо Action Script кода ще си оразмери 3D Style-a.
3. Преименуваме Layer 1 на Background и на него си слагаме фона на галерията.
4. Създаваме нов Layer, който го кръщаваме TXT. На него ще има 3 полета, в който ще се изписва информацията за картинката която сме селектирали от галерията. Ето как се правят полетата:
-- Направете 1 Dynamic Field и му задайте Instance Name = tn_title
-- Под него направете още едно Dynamic Field и нека то да е с повече от един ред разстояние и отново му задайте Instance Name, само че този път е tn_desc
-- И правим още едно Dynamic Field с Instance Name = tn_url . Тук на това поле ще се изписва линка който ще зададем в .xml и който ще се отваря при натискане на някоя от картинките.
5. Правим 3-ти Layer с име Actions и на него на фрейма слагаме кода:
/*
Created by d0brin
DPProductions
*/
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
var container:Sprite = new Sprite();
container.x = stage.stageWidth * 0.5;
container.y = 160;
addChild(container);
var scene:Scene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 6.5;
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";
var p_dict:Dictionary=new Dictionary();
var pc:Plane = new Plane();
pc.visible = false;
cam.target = pc;
var numOfRotations:Number = 2;
var yPos:Number = 0;
var angle:Number = 0;
var filename_list = new Array();
var url_list = new Array();
var url_target_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();
var folder:String = "thumbnails/";
var i:Number;
var j:Number = 0;
var k:Number = 0;
var l:Number = 0;
var m:Number = 0;
var total:Number;
var flashmo_xml:XML = new XML();
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("thumbnail_list_2.xml"));
loader.addEventListener(Event.COMPLETE, create_thumbnail);
function create_thumbnail(e:Event):void
{
flashmo_xml = XML(e.target.data);
total = flashmo_xml.thumbnail.length();
var anglePer:Number = ((Math.PI*2) * numOfRotations) / total;
for( i = 0; i < total; i++ )
{
url_list.push( flashmo_xml.thumbnail[i].@url.toString() );
url_target_list.push( flashmo_xml.thumbnail[i].@target.toString() );
title_list.push( flashmo_xml.thumbnail[i].@title.toString() );
description_list.push( flashmo_xml.thumbnail[i].@description.toString() );
var bfm:BitmapFileMaterial = new BitmapFileMaterial(
folder + flashmo_xml.thumbnail[i].@filename.toString());
bfm.oneSide = false;
bfm.smooth = true;
var p:Plane = new Plane(bfm, 140, 105, 2, 2);
scene.addChild(p);
var p_container:Sprite = p.container;
p_container.name = "flashmo_" + i;
p_dict[p_container] = p;
p_container.buttonMode = true;
p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
p_container.addEventListener( MouseEvent.CLICK, p_click );
if( i < 6 )
{
if( i < 3 )
{
p.y = 10;
}
else
{
p.y = -100;
j = j % 3;
}
p.x = j * 150 - 150;
p.z = -225;
j++;
}
else if( i < 12 )
{
if( i < 9 )
{
p.y = 10;
}
else
{
p.y = -100;
k = k % 3;
}
p.x = 225;
p.z = k * 150 - 150;
p.rotationY = -90;
k++;
}
else if( i < 18 )
{
if( i < 15 )
{
p.y = 10;
}
else
{
p.y = -100;
l = l % 3;
}
p.x = 150 - l * 150;
p.z = 225;
p.rotationY = 180;
l++;
}
else if( i < 24 )
{
if( i < 21 )
{
p.y = 10;
}
else
{
p.y = -100;
m = m % 3;
}
p.x = -225;
p.z = 150 - m * 150;
p.rotationY = 90;
m++;
}
}
}
function p_rollover(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
var tw1:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1, 1.14, 0.5, true);
var tw2:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1, 1.14, 0.5, true);
var s_no:Number = parseInt(sp.name.slice(8,10));
tn_title.text = title_list[s_no];
tn_desc.text = description_list[s_no];
tn_url.text = url_list[s_no];
}
function p_rollout(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
var tw1:Tween = new Tween(sp, 'scaleX', Strong.easeOut, 1.14, 1, 0.5, true);
var tw2:Tween = new Tween(sp, 'scaleY', Strong.easeOut, 1.14, 1, 0.5, true);
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";
}
function p_click(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
var s_no:Number = parseInt(sp.name.slice(8,10));
navigateToURL(new URLRequest(url_list[s_no]), url_target_list[s_no]);
}
addEventListener(Event.ENTER_FRAME, render);
function render(e:Event):void
{
var dist2:Number = ((stage.mouseX) - stage.stageWidth * 0.5) * 0.00018;
angle += dist2;
cam.x = Math.cos(angle) * 900;
cam.z = Math.sin(angle) * 900;
var new_zoom = 10 - stage.mouseY * 0.015;
cam.zoom += ( new_zoom - cam.zoom ) * 0.05;
cam.y = - cam.zoom * 90 + 650;
scene.renderCamera(cam);
}
http://dpproductions.110mb.com/aisndownloads/