public static function copyToBitmapWithTransparency( mc : DisplayObjectContainer ): Bitmap
        {

                    mc.cacheAsBitmap                        = true;
                    var wide:           Number              = mc.width;
var hi: Number = mc.height; var point: Point = new Point( 0, 0 ); var rect: Rectangle = new Rectangle( 0 , 0, wide, hi ); var abitmap: BitmapData = new BitmapData( wide, hi, true, 0x00000);

                    abitmap.draw( mc );
abitmap.copyPixels( abitmap, rect, point, abitmap, point, false );
                    return new Bitmap( abitmap );

        }

var sp: Sprite = new Sprite();
sp.addChild( texture );
var letter: BitmapMaterial = new BitmapMaterial( copyToBitmapWithTranparency( sp as DisplayObjectContainer ), { precision: 80, smooth: true });


var letter:BitmapMaterial=new BitmapMaterial(copyToBitmapWithTransparency(mc), {precision:80,
smooth:true});

On 13 Jul 2010, at 15:42, metSyS wrote:

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});
                        }
                }
        }
}

Reply via email to