PS设计教程网欢迎你!

Flash CS4教程:制作时尚的时钟效果(2)

文章来源于 动画设计与制作208例,感谢作者 lby 给我们带来经精彩的文章!
设计教程/设计教程/Flash教程2009-10-13
(7)新建3个影片剪辑,分别命名为Hours、Minutes和Seconds,然后分别在对应的影片剪辑中绘制出如图12-8所示时针、分针和秒针。 图12-8 绘制表秒针 Part 2 输入控制程序 (1)切换到库面板,然后分别为4个影片剪辑添加

(7)新建3个影片剪辑,分别命名为Hours、Minutes和Seconds,然后分别在对应的影片剪辑中绘制出如图12-8所示时针、分针和秒针。

Flash CS4教程:制作时尚的时钟效果

图12-8 绘制表秒针

Part 2 输入控制程序

(1)切换到“库”面板,然后分别为4个影片剪辑添加元件类,如图12-9所示。

Flash CS4教程:制作时尚的时钟效果

图12-9 添加元件类

技巧与提示:

在前面步骤中只创建了4个影片剪辑元件,它们只存在于“库”面板中,当发布成swf文件时,此时查看swf文件则为空,因为没有编写任何程序来进行引用和控制,就相当于该swf文件中只包含4个元件类,下面将通过加载该swf文件来引用和创建其元件类实例。

(2)新建一个ActionScript文件,并将其保存为SkinManager,然后编写出加载皮肤的管理类程序。

AS3代码

var skin_mc:SkinManager = SkinManager.getInstance();   
skin_mc.loadSkin("skin/01.swf");   
skin_mc.addEventListener("skincomplete",completeHandler);   
function completeHandler(e:Event) {   
    var class_name:String = "Bg";   
         var _class:Class = skin_mc.getClass(class_name);   
         var new_sprite:Sprite = new _class();   
         addChild(new_sprite);   
}

AS3代码

/**  
* 该类为皮肤加载管理类  
* @author lbynet  
* @version 0.1  
*/  
  
package {   
  
    import flash.display.Loader;   
    import flash.net.URLRequest;   
    import flash.events.Event;   
    import flash.events.EventDispatcher;   
  
    public class SkinManager extends EventDispatcher {   
        public static  const SKINCOMPLETE:String="skincomplete";   
        private static  var instance:SkinManager=new SkinManager();   
        public var loader:Loader;   
  
        public function SkinManager() {   
            if (instance != null) {   
                throw new Error("不能直接创建对象");   
            }   
            loader=new Loader();   
        }   
        public static function getInstance():SkinManager {   
            return instance;   
        }   
        public function loadSkin(path:String):void {   
  
            loader.load(new URLRequest(path));   
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);   
        }   
        private function completeHandler(e:Event) {   
            //移除侦听器   
            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,completeHandler);   
            dispatchEvent(new Event(SkinManager.SKINCOMPLETE));//发布事件   
        }   
        public function getClass(className:String):Class {   
            try {   
                return loader.contentLoaderInfo.applicationDomain.getDefinition(className)  as  Class;   
            } catch (e:Error) {   
                throw new Error(className + " definition not found in " + e.toString());   
            }   
            return null;   
        }   
    }   
}

技术看板:关于SkinManager类涉及到的难点

有一定编程基础的用户很容易看出该类使用了很常用的“设计模式”中的单件模式,通过提供该类公有的静态方法getInstance()作为返回唯一的实例对象,并且可以对该实例进行全局访问。

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