In the following  file,(away 3d 3.6) I am loading a collada and
animating the bones. After tweaking the vertex positions of the bones
and adding tweens, it works! but...upon loading the "programmatic"
bones animation only SOMETIMES works; sometimes not! ; so that the
model will rotate in the viewport but none of the bones/tweens, etc --
i might have to load + reload the .swf MANY times until the tweens +
transforms kick in (in various browsers the result is similar). The
overall rotation of the model is always working and the .dae loads in
super-quickly.  I cannot find any traces/debugging  that help me,  I
am really lost.thank you for your time + consideration. ge5


package
{
        import away3d.containers.*;
        import away3d.core.*;
        import away3d.core.base.*;
        import away3d.events.*;
        import away3d.loaders.*;
        import away3d.materials.BitmapMaterial;
        import away3d.modifiers.data.*;
        import away3d.primitives.*;

        import com.greensock.TweenLite;
        import com.greensock.TweenMax;
        import com.greensock.core.*;
        import com.greensock.easing.*;
        import com.greensock.*;

        import fl.transitions.*;

        import flash.display.Bitmap;
        import flash.events.*;
        import flash.geom.Vector3D;
        import flash.utils.Timer;


        [SWF(width="800", height="800")]
        public class anim2 extends SampleBase
        {
                private var _loader : Loader3D;
                private var _skeleton : ObjectContainer3D;
                private var mid : Bone;
                private var dl: Bone;
                private var lfu : Bone;
                private var lf : Bone;
                private var rfu : Bone;
                private var mfu : Bone;
                private var mf : Bone;
                private var rf : Bone;
                private var th : Bone;
                private var l:Array;
                private var u: Array;

                private var myTween:TweenMax;
                private var _bitMat:BitmapMaterial;
                private var timer:Timer ;

                [Embed(source="doComp.jpg")]
                private var tex:Class;



                public function anim2() {
                        super();
                }


                protected override function _createScene() : void
                {
                        var collada : Collada = new Collada();
                        _loader = new Loader3D();
                        _loader.addEventListener(Loader3DEvent.LOAD_SUCCESS,
_onLoadSuccess);

                        _loader.loadGeometry('http://geraldineerman.com/
25old.dae',collada);
                        _loader.y = -250;
                        _loader.z=750;
                        _loader.x=-90;
                        _view.scene.addChild(_loader);


                }

                private function _onLoadSuccess(ev : Loader3DEvent) : void
                {
                        _skeleton = _loader.handle as ObjectContainer3D;
                        _bitMat=new BitmapMaterial(Bitmap(new 
tex()).bitmapData);
        
_skeleton.materialLibrary.getMaterial("doComp_jpg").material=_bitMat;


                        _skeleton.scale(5);
                        _skeleton.scaleZ=5.3;
                        _skeleton.rotationZ= -25;

                        _skeleton.useHandCursor = true;

                        dl = _skeleton.getBoneByName('DOLL');
                        mid = _skeleton.getBoneByName('MID');
                        lf = _skeleton.getBoneByName('LF');
                        lfu = _skeleton.getBoneByName('LFU');
                        mf = _skeleton.getBoneByName('MF');
                        mfu = _skeleton.getBoneByName('MFU');
                        rf = _skeleton.getBoneByName('RF');
                        rfu = _skeleton.getBoneByName('RFU');
                        th = _skeleton.getBoneByName('TH');


                        dl.scale(5.2);
                        th.scale(5.40);


                        lf.scale(5);
                        mf.scale(4.88);

                        rf.scale(4.88);

                        mid.addOnMouseOver(onMouseOver);
                        dl.ownCanvas=true;


                        l=[];
                        u=[];
                        l.push(rf,mf,lf);
                        u.push(rfu,mfu,lfu);
                OverwriteManager.init(OverwriteManager.AUTO);


                timer= new Timer(1500,1);
                timer.addEventListener(TimerEvent.TIMER, onOver);
                        timer.start();
                }


protected function onOver(event:TimerEvent):void{

                        //trace(timer +"Timer");
                        myTween=new 
TweenMax(th,.7,{x:-3,y:0,z:-1.0,scaleY:4.8,scaleX:
4.8,scaleZ:4.8,onComplete:rerun, repeat:-1,yoyo:true});

                }

                protected function rerun():void{

                        myTween.reverse();
                        timer.removeEventListener(TimerEvent.TIMER, onOver);

                }

                protected function onMouseOver(event:MouseEvent3D):void{


                        
TweenLite.to(dl,.7,{x:-6.3,z:-0.82,scaleX:5.25,scaleY:5.25,scaleZ:
5.25,jointRotationX:80,jointRotationZ:15,ease:Quad.easeOut});
                        mid.removeOnMouseOver(onMouseOver);
                        mid.addOnRollOut(onRollOut);

                }
                protected function onRollOut(event:MouseEvent3D):void{

                        
TweenLite.to(dl,.7,{x:-8,z:-2,scaleX:5.,scaleY:5.,scaleZ:
5.,jointRotationX:-60,ease:Quad.easeIn});

                        mid.removeOnMouseOut(onRollOut);
                        mid.addOnMouseOver(onMouseOver);


                }

                protected override function _onEnterFrame(ev : Event) : void
                {
                        if (_skeleton) {

                                _skeleton.rotationY = -90-(stage.mouseY - 
stage.stageHeight) /2.5;

                                if(_skeleton.rotationY>=120){
                                        _skeleton.rotationY=120;
                                }

                                dl.transform.position=new Vector3D(-6.3,4,-1.0);
                                //lfu.transform.position=new Vector3D(2,8,-2);
                                lf.transform.position=new Vector3D(-2,8.8,1.0);
                                mf.transform.position=new Vector3D(2,9,.3);
                                rf.transform.position=new Vector3D(5,8.1,.8);
                                th.transform.position=new Vector3D(-2,1,-3);


                                var count:Number=u.length;
                                var count2:Number=l.length;
                                for ( var i:int=0; i<count; i++ ) {
                                        for (var inc:int=0; inc<count2; inc++) {

                                                TweenLite.to(l[inc],.2*inc+1,
{jointRotationZ:_skeleton.rotationY*.6,ease:Quad.easeOut});
                                                
TweenLite.to(u[i],.22*i+1,{jointRotationZ:_skeleton.rotationY*.
7,ease:Quad.easeOut});


                                        }
                                }

                        }

                        super._onEnterFrame(ev);
                }
        }
}

Reply via email to