Can't understand how to do BitmapMaterial more clarity. I've tried
everything I knew, I don't want to use movie material. Here's my
code :
package {
import away3d.cameras.HoverCamera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.base.Object3D;
import away3d.core.render.Renderer;
import away3d.events.MouseEvent3D;
import away3d.materials.BitmapMaterial;
import away3d.materials.MovieMaterial;
import away3d.primitives.Plane;
import away3d.primitives.Trident;
import caurina.transitions.Tweener;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
[SWF(width="1024", height="768", frameRate="30",
backgroundColor="0xAAAAAA", quality="high")]
public class Away3D extends Sprite
{
private var scene:Scene3D;
private var view:View3D;
private var cam:HoverCamera3D;
private var lettersArray:Array=new Array();
private var lettersGroup:ObjectContainer3D;
private var lettersCounter:int=0;
private var playFieldSize:int;
public function Away3D()
{
init();
addObjects();
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function init():void
{
scene=new Scene3D();
cam=new HoverCamera3D({distance:600});
cam.targetpanangle=cam.panangle=0;
cam.targettiltangle=cam.tiltangle=70;
view=new View3D({camera:cam, x:stage.stageWidth/2,
y:stage.stageHeight/2});
view.renderer=Renderer.CORRECT_Z_ORDER;
addChild(view);
}
private function addObjects():void
{
lettersGroup=new ObjectContainer3D();
playFieldSize=15;
var k:int=(playFieldSize-10)*21;
for (var i:int=0; i<playFieldSize; i++)
{
for (var j:int=0; j<playFieldSize; j++)
{
lettersArray[j]=new Plane({width:38,
height:38, x:(189-(i*42)+k),
z:(189-(j*42)+k), rotationX:180, rotationY:180, back:'black'});
lettersArray[j].bothsides=true;
lettersArray[j].material=createMaterial("7");
//lettersArray[j].back="black";
view.scene.addChild(lettersArray[j]);
lettersArray[j].addOnMouseOver(overLetter);
lettersArray[j].addOnMouseOut(outLetter);
lettersArray[j].addOnMouseDown(downLetter);
}
}
view.scene.addChild(lettersGroup);
var axis:Trident=new Trident(150);
view.scene.addChild(axis);
}
private function createMaterial(label:String):BitmapMaterial
{
var texture:TextField=new TextField();
texture.text=label;
texture.antiAliasType="advanced";
var bmd:BitmapData=new BitmapData(36,36);
bmd.draw(texture);
var letter:BitmapMaterial=new BitmapMaterial( bmd,
{precision:80,
smooth:true});
return letter;
}
private function onEnterFrame(e:Event):void
{
var cameraSpeed:Number=0.3;
//cam.targetpanangle=-((mouseX-(stage.stageWidth/2))*0.05);
//cam.targettiltangle=-((mouseY-(stage.stageHeight/2))*0.05);
cam.hover();
view.render();
}
private function overLetter(e:MouseEvent3D):void
{
var object:Object3D=e.object;
Tweener.addTween(object, {y:50, time:1});
}
private function outLetter(e:MouseEvent3D):void
{
var object:Object3D=e.object;
Tweener.addTween(object, {y:0, time:1});
}
private function downLetter(e:MouseEvent3D):void
{
if (lettersCounter<7)
{
lettersCounter++;
var object:Object3D=e.object;
e.target.removeOnMouseDown(downLetter);
e.target.removeOnMouseOut(outLetter);
e.target.removeOnMouseOver(overLetter);
Tweener.addTween(object,
{x:(168+(-42*lettersCounter)), z:300, y:
600, rotationX:0, time:1});
}
}
}
}