+ -
当前位置:首页 → 问答吧 → 类绑定的一些疑问。

类绑定的一些疑问。

时间:2011-01-05

来源:互联网

复制内容到剪贴板
代码:
class A extends MovieClip
{
    public var b:MovieClip;
    public function A()
    {
        trace("b = "+b);
        trace("b._type = "+b._type);
    }
}
复制内容到剪贴板
代码:
class B extends MovieClip
{
    public var _type:String  = "Rectangle";
    public function B()
    {
        trace("this is b");
    }
}
01.JPG (7.24 KB)
2011-1-5 09:04


影片剪辑实例b放置在影片剪辑实例a的内部,a和b分别绑定了类A和类B。
测试影片输出如下:
b = _level0.a.b
b._type = undefined
this is b
为什么没有找不到b._type了呢。因为我这个是直接放置在影片剪辑实例a的内部的,但如果是通过attachMovie加载到a的内部的话就是正常的。
复制内容到剪贴板
代码:
class A extends MovieClip
{
    public var b:MovieClip;
    public function A()
    {
        b = this.attachMovie ("b","b",this.getNextHighestDepth());
        trace("b = "+b);
        trace("b._type = "+b._type);
    }
}
输出结果。
this is b
b = _level0.a.b
b._type = Rectangle

为什么呢?

附件

test.rar (5.33 KB)

2011-1-5 09:04, 下载次数: 3

作者: QWEASZ   发布时间: 2011-01-05

as2我不是很懂。
這個看起來B的構造函數是在輸出後執行的。
也就是在A的構造體中B還沒有開始構造。

作者: enc0717   发布时间: 2011-01-05

是啊,很困惑,有什么好的解决方案没有?

作者: QWEASZ   发布时间: 2011-01-05

实例化次序的问题   attachMovie是实时实例化   时间轴的实例化是从外到内

作者: HSZZLZL   发布时间: 2011-01-05

class A extends MovieClip
{
       public var b:MovieClip;
       public function A()
       {
              //b = this.attachMovie ("b","b",this.getNextHighestDepth());
              
              //trace("b = "+b);
              //trace("b._type = "+ this.b["_type"]);
              this.onEnterFrame = function(){
                     if(b._type){
                            trace(b._type)
                            delete this.onEnterFrame;
                     }
              }
       }
}

作者: HSZZLZL   发布时间: 2011-01-05

原则上 个人感觉 你应该在类A中定义function  然后在类B实例化完成 即构造函数中调用init()

在init()中再行调用父级对象的方法 如类A的function

作者: HSZZLZL   发布时间: 2011-01-05

这个总结的好,看来最好还是用attachMovie了。多谢!

作者: QWEASZ   发布时间: 2011-01-05

复制内容到剪贴板
代码:
class B
{
    public var _type:String  = "Rectangle";
    public function B(targetMc:MovieClip)
    {
        trace("this is b");
        targetMc._type= this._type;
        targetMc.getType = this.getType;
    }
    public function getType()
    {
        return this._type;
    }
}
复制内容到剪贴板
代码:
class A extends MovieClip
{
    public var b:MovieClip;
    public var c:MovieClip;
    public var i:Number = 100;
    public function A()
    {
        //b = this.attachMovie ("b","b",this.getNextHighestDepth());
        var _b = new B(b);
        _b = new B(c);
        c._type = "icon";
        trace("b = "+b);
        trace("i = "+i);
        trace("b._type= "+b.getType());
        trace("c._type= "+c.getType());
    }
}
想了下,给影片实例绑定类,无非也就添加一些属性和一些方法。不用在库中先绑定了,动态的通过类B直接来添加这些方法。但就是不能实现私有的了。

作者: QWEASZ   发布时间: 2011-01-05

什么跟什么啊 怎么绑定一个属性要new 来 new去的?

作者: HSZZLZL   发布时间: 2011-01-05