rendered paste body//My class that creates double Plane(Cube) in scene
package com.papervision3D
{
import flash.display.Stage;
import flash.geom.Rectangle;
import com.display.PlaneMaterial.MainMaterial;
import com.display.PlaneMaterial.MainMaterialEvent;
import com.display.PlaneMaterial.CoverMaterial.*;
import com.MailTypeConstant;
//Papervision3D import-----------------------------//
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.MovieMaterial;
import org.papervision3d.events.*;
import org.papervision3d.materials.utils.*;
public class MyDoublePlane extends DisplayObject3D
{
private var frontMaterial:CoverMaterial;
public var backMaterial:MainMaterial;
private var materialFront:MovieMaterial;
private var materialBack:MovieMaterial;
private var doublePlane:Cube;
private var materialList:MaterialsList;
public var planeWidth:int = 225;
public var planeHeight:int = 250;
public var positionObj:Object = {};
private var quality:Number = 4;
private var config:Object;
public function MyDoublePlane(conf:Object = null)
{
config = conf;
createCube(); //create my Cube
}
public function createCube():void
{
//Create movie for front material
frontMaterial = new CoverMaterial();
frontMaterial.addEventListener(CoverMaterialEvent.LOAD_COMPLETE, onMaterialLoadComplete);
frontMaterial.addEventListener(CoverMaterialEvent.UNLOAD, onMaterialUnload);
//Create movie for back material
backMaterial = new MainMaterial();
backMaterial.addEventListener(MainMaterialEvent.LOAD_COMPLETE, onMaterialLoadComplete);
backMaterial.addEventListener(MainMaterialEvent.ERROR, onMaterialError);
backMaterial.addEventListener(MainMaterialEvent.UNLOAD, onMaterialUnload);
materialList = new MaterialsList();
materialFront = new MovieMaterial(frontMaterial,false, true, true);
materialBack = new MovieMaterial(backMaterial, false, true, true);
materialFront.interactive = true;
materialBack.interactive = true;
materialFront.smooth = true;
materialBack.smooth = true;
materialBack.rect = new Rectangle(0, 0 ,planeWidth, planeHeight);
materialList.addMaterial(materialBack, "back");
materialList.addMaterial(materialFront, "front");
var insideFaces:int = Cube.FRONT + Cube.BACK;
doublePlane = new Cube(materialList, planeWidth, 0, planeHeight, quality, quality, quality, insideFaces);
doublePlane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onMouseOver, false, 0, false);
doublePlane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, onMouseOut, false, 0, false);
addChild(doublePlane);
}
public function unloadBackImage():void
{
if( backMaterial.src != "")
backMaterial.unload();
backMaterial = new MainMaterial({width:planeWidth, height:planeHeight, background:config.mail.background});
backMaterial.removeEventListener(MainMaterialEvent.LOAD_COMPLETE, onMaterialLoadComplete);
backMaterial.removeEventListener(MainMaterialEvent.UNLOAD, onMaterialUnload);
}
public function deletePlane():void
{
unloadBackImage();
unloadFrontImage();
removeChild(doublePlane);
doublePlane.removeEventListener(InteractiveScene3DEvent.OBJECT_OVER, onMouseOver, false);
doublePlane.removeEventListener(InteractiveScene3DEvent.OBJECT_OUT, onMouseOut, false);
backMaterial = null;
frontMaterial = null;
materialList.removeMaterial(materialBack);
materialList.addMaterial(materialFront);
materialBack.destroy();
materialBack.interactive = false;
materialBack.unregisterObject(doublePlane);
materialBack = null;
materialFront.unregisterObject(doublePlane);
materialFront.interactive = false;
materialFront.destroy();
materialFront = null;
materialList = null;
doublePlane =null;
}
public function unloadFrontImage():void
{
if(frontMaterial.src != "")
frontMaterial.unload();
frontMaterial.removeEventListener(CoverMaterialEvent.LOAD_COMPLETE, onMaterialLoadComplete);
frontMaterial.removeEventListener(CoverMaterialEvent.UNLOAD, onMaterialUnload);
}
public function setMaterialAnimated(anim:Boolean):void
{
if (materialList)
{
materialFront.animated = anim;
materialBack.animated = anim;
}
}
}
}
//Function for delete instance of MyDoublePlane - doublePlanes is Array with all instance of MyDoublePlane
private function deletePlane(index:int):void
{
scene.removeChild(doublePlanes[index]);
if(doublePlanes[index].planeType != MailTypeConstant.EMPTY)
{
doublePlanes[index].setMaterialAnimated(false);
doublePlanes[index].deletePlane();
}
delete doublePlanes[index];
}