首页 文章

Flash AS3中的Pan类

提问于
浏览
0

我有一个movieclip,我将为它添加一个平移功能 . 我想添加pan作为movieclip可以引用的自己的类 .

当我创建pan类时,我将movieclip发送给它,所以我始终拥有它的位置属性 .

在pan类中访问舞台的最佳方式是什么?我需要能够获得舞台mouseX,mouseY,stageWidth和stageHeight .

现在,我让pan类扩展了一个sprite对象,并实际将它添加为我想要平移的movieclip的子级 .

将舞台本身送入泛级课程会不会更好或者有更好的方法吗?

1 回答

  • 1

    创建一个单例类,用于管理名为 StageManager 的阶段的更改,并通过向阶段传递引用来初始化它:

    //StageManager.as
    
    import flash.display.Stage;
    
    public class StageManager()
    {
        //publicly accessible singleton instance
        public static var instance:StageManager = new StageManager();
    
        private var m_stage:Stage;
    
        //I'm using a custom getter and setter in just in case you need perform some other 
        //initialization when the stage gets set...
        public function set stage(stg:Stage):void
        {
            m_stage = stg;
        }
    
        public function get stage():Stage
        {
            return m_stage;
        }
    
    }
    

    然后在其他地方,就像你的主控制器类:

    StageManager.instance.stage = this.stage;
    

    现在,您可以通过 StageManager 全局访问舞台及其属性:

    var stageW:int = StageManager.instance.stage.stageWidth;
    

    这样,不仅仅是你的Pan类,而且其他任何事情都可以随时访问全球舞台 . 很酷,对吧?

    至于如何设计你的Pan类,我同意@The_asMan - 扩展 MovieClip . 除非,也就是说,一个 Pan 实例将控制几个 MovieClip 实例,那么将它作为自己的东西(你在上面描述的方式)可能更有意义 .

相关问题