PS设计教程网欢迎你!

Flash CS4教程:制作切换扑克牌效果(2)

文章来源于 Flash CS4动画设计与制作208例,感谢作者 lby 给我们带来经精彩的文章!
设计教程/设计教程/Flash教程2009-10-22
(5)创建文档类Main类,如图3-所示,首先创建一个牌的容器container,并将其放置于舞台中心位置,如构造函数第20到23行代码所示,然后创建扑克牌容器对象并添加到容器container中,如第25、26行代码所示,并将扑克牌

(5)创建文档类Main类,如图3-所示,首先创建一个牌的容器“container”,并将其放置于舞台中心位置,如构造函数第20到23行代码所示,然后创建扑克牌容器对象并添加到容器“container”中,如第25、26行代码所示,并将扑克牌容器对象停止播放(也就是停留在第1帧)、启动按钮模式和注册侦听器函数,如第27到29行代码所示。

AS3代码

package    
{   
    import flash.display.*;   
    import flash.events.*;   
    import caurina.transitions.Tweener;   
    /**  
     * ...  
     * @author lbynet (Tools -> Custom Arguments...)  
     */  
    public class Main extends Sprite {   
           
        private var container:Sprite;   
        private var pane:MovieClip;   
        private var isback:Boolean;   
        private var currentPlane:MovieClip;   
        private var currentRotationY:Number;   
           
        public function Main():void {   
               
            container = new Sprite();   
            container.x=stage.stageWidth/2;   
            container.y=stage.stageHeight/2;   
            addChild(container);   
               
            pane = new Card();   
            container.addChild(pane);   
            pane.stop();   
            pane.buttonMode=true;   
            pane.addEventListener(MouseEvent.CLICK, onClick);   
        }

(6)当扑克牌容器对象被单击时调用onClick侦听器函数,为stage注册事件侦听来控制何时切换为正面或是反面,通过判断变量isback 来重新设置被单击扑克牌的rotationY属性,如第36到44行代码所示,在第38、42行代码,通过Tweener 来切换扑克牌的rotationY值在0与-180度之间,如下原理图15-5 所示。

Flash CS4教程:制作切换扑克牌效果

AS3代码

    private function onClick(event:MouseEvent):void {   
           
        stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);   
        currentPlane = MovieClip(event.currentTarget);   
        if (isback) {            
            Tweener.addTween(currentPlane, { rotationY:0,time:1 } );   
            //Tweener.addTween(currentPlane, { z:0,time:1 } );   
        } else {           
            Tweener.addTween(currentPlane, { rotationY:-180,time:1 } );   
            //Tweener.addTween(currentPlane, { z:-200,time:1 } );   
        }   
        isback = ! isback;   
    }   
    private function enterFrameHandler(event:Event):void {          
        currentRotationY = currentPlane.rotationY;   
        if (currentRotationY >= -90 && currentRotationY <= 10) {            
            if (isback) {   
                currentPlane.gotoAndStop(2);   
            } else {   
                currentPlane.gotoAndStop(1);   
            }   
            stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);   
            trace("已清除事件侦听");   
        }    
    }    
}

图15-5 文档类

(7) 当用户单击扑克牌容器对象,在第34行代码中注册的侦听器后,执行侦听器函数enterFrameHandler ,并通过时时判断扑克牌容器对象的rotationY的值来判断扑克牌容器对象要切换跳转到哪一帧,如第50到59行代码所示,最后,清除无用的侦听器,如第57行代码所示。

(8)把onClick侦听器函数中第39、43两行代码放开,发布测试,当用户单击扑克牌容器对象后,扑克牌切换翻转并放大(其实际是对象的z轴值减小),如下图3- 所示,当再次单击后,扑克牌切换翻转并缩小致原始状态。

进入论坛参与讨论和交作业:http://www.missyuan.com/viewthread.php?tid=425890

版权所有PS设计教程网公安备案:苏公网安备 32058302001023号工信部备案:沪ICP备09005587号
aaa