不能在as3中的函数内创建静态变量,我需要替换

时间:2014-07-15 11:08:56

标签: actionscript-3 flash

即时通讯使用动作脚本3 flash cc 我尝试在函数中使用静态变量,但我遇到一个错误,说你只能为类而不是函数创建静态变量!

我在场景中有无数的对象,每一个都是一个带有我在项目中使用的句柄名称的movieclip! 现在,如果我尝试创建一个新类并在该类中添加我想要的额外变量,然后将我的每个场景对象分配给它,那将花费很长时间和很多变量!对于像c ++这样的语言允许的简单静态变量!

我尝试了几种方法来传递这个问题 1-创建一个Tmovieclip类

package {
    import flash.display.MovieClip;

    public class TMovieClip extends MovieClip {
        public
        var _vx: Number = 0;
        public
        var _vy: Number = 0;

        public
        function TMovieClip() {

        }
    }
}

2 - 我用tmovieclip条目声明了一个函数

private function test(tmc: tmovieclip):void
{ 
}

3-试图像这样调用测试功能

test(mymovieclip);

但是我遇到了另一个错误" 1067:flash.display类型值的隐式强制:MovieClip到不相关的类型TMovieClip"

所以我尝试了别的东西

        public function springObjectC(obj: MovieClip, anchorPoint: Point): Boolean
    {
        if (obj.parent is TMovieClip)
        {
            trace("i am tmovieclip");
            if (obj.x != anchorPoint.x && obj.y != anchorPoint.y)
            {
                var dx: Number = obj.x - anchorPoint.x;
                var dy: Number = obj.y - anchorPoint.y;
                var angle: Number = Math.atan2(dy, dx);
                var targetX: Number = anchorPoint.x + Math.cos(angle) * _springLength;
                var targetY: Number = anchorPoint.y + Math.sin(angle) * _springLength;

                TMovieClip(obj.parent)._vx += (targetX - obj.x) * _spring;
                TMovieClip(obj.parent)._vy += (targetY - obj.y) * _spring;
                TMovieClip(obj.parent)._vx *= _friction;
                TMovieClip(obj.parent)._vy *= _friction;
                obj.x += TMovieClip(obj.parent)._vx;
                obj.y += TMovieClip(obj.parent)._vy;

                if (Math.abs(obj.x -anchorPoint.x) < 0.001 && Math.abs(obj.y - anchorPoint.y) < 0.001)
                {
                    obj.x = anchorPoint.x;
                    obj.y = anchorPoint.y;
                    return false;
                }
                else
                    return true;
            }
            else
                return true;
        }
        else
        {
            var tmc: TMovieClip = new TMovieClip();
            addChild(tmc);
            tmc.addChild(obj);
            return true;
        }
    }

你可以看到我尝试为我的movieclip制作一个tmovieclip父级,以防它没有一个 然后试着计算! 在这种情况下,我没有遇到任何错误!但它仍然无法工作,我不明白为什么!你有没有办法让我在我的函数中使用_vx和_vy就像一个静态变量而没有经历所有这些问题? ,谢谢

基于评论和答案的最新结果:
 我并没有真正考虑将 MoiveClip 基类更改为 TMovieClip
 但是当有人在评论中提出并且它现在解决了我的问题时我做了!  虽然改变20-30个MovieClip基类需要一些时间!现在它会为我做这个工作

0 个答案:

没有答案