
Код AS3:
package
{
import away3d.containers.ObjectContainer3D;
import away3d.core.base.Object3D;
import away3d.events.MouseEvent3D;
import away3d.primitives.Cube;
import away3d.primitives.Trident;
import away3d.primitives.data.CubeMaterialsData;
import caurina.transitions.Tweener;
import flash.events.Event;
public class Objects
{
public var xml:XMLLoad=new XMLLoad();
private var langPrimArray:Array=new Array();
public var langPrimCont:ObjectContainer3D=new ObjectContainer3D();
public var _doska:Cube;
public var _axis:Trident;
private var cubeData:CubeMaterialsData=new CubeMaterialsData({left:'black', right:'black', top:'black', bottom:'black', back:'black'});
public function Objects()
{
}
public function chooseLanguage():void
{
for (var i:int=0; i<3; i++)
{
langPrimArray[i]=new Cube({width:400, height:100, depth:50});
langPrimArray[i].y=150+(-i*150);
langPrimArray[i].cubeMaterials=cubeData;
langPrimCont.addChild(langPrimArray[i]);
}
langPrimCont.addOnMouseOver(addOnMouseOver_langPrimCont);
langPrimCont.addOnMouseOut(addOnMouseOut_langPrimCont);
langPrimCont.addOnMouseDown(addOnMouseDown_langPrimCont);
}
private function addOnMouseOver_langPrimCont(e:MouseEvent3D):void
{
var object:Object3D=e.object;
tweenFunc(object, object.x, object.y, 100, object.rotationX, object.rotationY, object.rotationZ, 1, 0, "easeOutSine");
}
private function addOnMouseOut_langPrimCont(e:MouseEvent3D):void
{
var object:Object3D=e.object;
tweenFunc(object, object.x, object.y, 0, object.rotationX, object.rotationY, object.rotationZ, 1, 0, "easeOutBounce");
}
private function addOnMouseDown_langPrimCont(e:MouseEvent3D):void
{
var url:String=new String();
var object:Object3D=e.object;
if (langPrimCont.children.indexOf(object)==0)
{
url="data/xml/English_Menu.xml";
}
if (langPrimCont.children.indexOf(object)==1)
{
url="data/xml/Russian_Menu.xml";
}
if (langPrimCont.children.indexOf(object)==2)
{
url="data/xml/Ukranian_Menu.xml";
}
xml.loadingXML(url);
xml.addEventListener(Event.COMPLETE, onXMLLoaded);
}
private function onXMLLoaded(e:Event):void
{
e.target.removeOnMouseDown(addOnMouseDown_langPrimCont);
e.target.removeOnMouseOver(addOnMouseOver_langPrimCont);
langPrimCont.addOnMouseDown(addOnMouseDown_Option);
tweenFunc(langPrimCont, langPrimCont.x, langPrimCont.y, 300, langPrimCont.rotationX, 180, langPrimCont.rotationZ, 3, 0, "easeOutSine");
}
private function addOnMouseDown_Option(e:MouseEvent3D):void
{
e.target.removeOnMouseOut(addOnMouseOut_langPrimCont);
e.target.removeOnMouseDown(addOnMouseDown_Option);
var object:Object3D=e.object;
tweenFunc(object, object.x, 0, object.z, 180, object.rotationY, object.rotationZ, 1.5, 0, "easeOutSine");
var i:int=0;
var j:Number=1;
for (i; i<3; i++)
{
if (langPrimCont.children.indexOf(object) != i)
{
tweenFunc(langPrimArray[i], j*1500, langPrimArray[i].y, langPrimArray[i].z, langPrimArray[i].rotationX, langPrimArray[i].rotationY, langPrimArray[i].rotationZ, 2, 0, "easeOutSine")
j*=-1;
}
}
}
public function doskaFunc():void
{
_doska=new Cube({width:601, depth:601, height:20});
_axis=new Trident(350);
}
private function tweenFunc(object:Object3D, x:int, y:int, z:int, rotX:int, rotY:int, rotZ:int, time:Number, delay:Number, effect:String):void
{
Tweener.addTween(object, {x:x, y:y, z:z, rotationX:rotX, rotationY:rotY, rotationZ:rotZ, time:time, delay:delay, transition:effect});
}
}
}