Flash AS3中的Pan类

时间:2012-06-12 20:18:35

标签: actionscript-3 flash pan

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

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

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

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

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

1 个答案:

答案 0 :(得分: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实例,否则将它作为自己的事物(上面描述的方式)可能更有意义。