Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScript 3-引用静态方法_Actionscript 3_Methods_Static_Reference - Fatal编程技术网

Actionscript 3 ActionScript 3-引用静态方法

Actionscript 3 ActionScript 3-引用静态方法,actionscript-3,methods,static,reference,Actionscript 3,Methods,Static,Reference,有没有一种方法可以使静态方法在不使用关键字“this”的情况下对其类中已在后台的对象执行操作?我的意思是,就像“这个类的泛型对象:做我告诉你做的,不管你的实例名是什么” 我的目标是创建一个方法,根据外部变量值的变化,该方法可被此类的任何对象调用,但由于我无法使用“this”关键字引用每个实例,因此我无法找到解决方案 提前谢谢 除非您以其他方式访问该对象(如下所示): 包 { 导入flash.display.MovieClip 导入flash.events.Event 公共类的东西扩展了Movie

有没有一种方法可以使静态方法在不使用关键字“this”的情况下对其类中已在后台的对象执行操作?我的意思是,就像“这个类的泛型对象:做我告诉你做的,不管你的实例名是什么”

我的目标是创建一个方法,根据外部变量值的变化,该方法可被此类的任何对象调用,但由于我无法使用“this”关键字引用每个实例,因此我无法找到解决方案


提前谢谢

除非您以其他方式访问该对象(如下所示):

包
{
导入flash.display.MovieClip
导入flash.events.Event
公共类的东西扩展了MovieClip
{
私有静态变量组:向量。=新向量。();
公共职能
{
//在“添加”和“删除”上执行此操作通常更可靠。
//但是!它不允许您访问所有实例,只允许访问
//目前有父母的人
addEventListener(Event.ADDED,addedHandler);
//也就是说,因为AS3没有析构函数,所以removed是唯一的
//清理实例的方法
addEventListener(Event.REMOVED,removeHandler);
}
公共静态函数doSomethingWithClass():void
{
对于(变量i:int=0;i
你能举个更具体的例子吗?从你的描述中,你试图实现的目标一点也不清楚。我不确定你在问什么,但也许使用单例模式可以解决你的问题??这似乎是一个不理解actionscript 3和actionscript 2中的范围和对象引用的问题。我现在可以告诉你,创建静态变量或方法作为类的引用是一个非常非常糟糕的主意。它直接违背了包括OOP在内的良好编码实践的基础。但是,正如上面提到的,也许扩展您的问题是合适的。
package
{
    import flash.display.MovieClip
    import flash.events.Event
    public class Something extends MovieClip
    {
        private static var group:Vector.<Something> = new Vector.<Something>();

        public function Something()
        {
            // doing this on added and removed is generally more reliable.
            // BUT! it does not give you accesses to all instances, only the
            // ones which currently have a parent
            addEventListener( Event.ADDED, addedHandler ); 
            // that said, since AS3 has no destructor, removed is the only 
            // way to clean up instances
            addEventListener( Event.REMOVED, removeHandler );
        }

        public static function doSomethingWithClass():void
        {
            for( var i:int = 0; i < group.length; i++ )
            {
                trace( group[ i ] );
            }
        }

        private function addedHandler( event:Event ):void
        {
            group.push( this );
        }

        private function removeHandler( event:Event ):void
        {
            group.splice( group.indexOf( this ), 1 );
        }
    }
}