收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1652|回复: 12

[AS1&2] 类绑定的一些疑问。

[复制链接]
发表于 2011-1-5 09:04:06 | 显示全部楼层 |阅读模式

  1. class A extends MovieClip
  2. {
  3.         public var b:MovieClip;
  4.         public function A()
  5.         {
  6.                 trace("b = "+b);
  7.                 trace("b._type = "+b._type);
  8.         }
  9. }
复制代码


  1. class B extends MovieClip
  2. {
  3.         public var _type:String  = "Rectangle";
  4.         public function B()
  5.         {
  6.                 trace("this is b");
  7.         }
  8. }
复制代码


01.JPG

影片剪辑实例b放置在影片剪辑实例a的内部,a和b分别绑定了类A和类B。
测试影片输出如下:
b = _level0.a.b
b._type = undefined
this is b
为什么没有找不到b._type了呢。因为我这个是直接放置在影片剪辑实例a的内部的,但如果是通过attachMovie加载到a的内部的话就是正常的。

  1. class A extends MovieClip
  2. {
  3.         public var b:MovieClip;
  4.         public function A()
  5.         {
  6.                 b = this.attachMovie ("b","b",this.getNextHighestDepth());
  7.                 trace("b = "+b);
  8.                 trace("b._type = "+b._type);
  9.         }
  10. }
复制代码

输出结果。
this is b
b = _level0.a.b
b._type = Rectangle

为什么呢?

test.rar

5.33 KB, 下载次数: 202

发表于 2011-1-5 09:34:15 | 显示全部楼层
as2我不是很懂。
這個看起來B的構造函數是在輸出後執行的。
也就是在A的構造體中B還沒有開始構造。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-5 09:54:19 | 显示全部楼层

回复 2# enc0717 的帖子

是啊,很困惑,有什么好的解决方案没有?
回复 支持 反对

使用道具 举报

发表于 2011-1-5 09:54:25 | 显示全部楼层
实例化次序的问题   attachMovie是实时实例化   时间轴的实例化是从外到内
回复 支持 反对

使用道具 举报

发表于 2011-1-5 09:55:49 | 显示全部楼层
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;
                        }
                }
        }
}
回复 支持 反对

使用道具 举报

发表于 2011-1-5 09:57:07 | 显示全部楼层
原则上 个人感觉 你应该在类A中定义function  然后在类B实例化完成 即构造函数中调用init()

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

使用道具 举报

 楼主| 发表于 2011-1-5 10:49:35 | 显示全部楼层

回复 4# HSZZLZL 的帖子

这个总结的好,看来最好还是用attachMovie了。多谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-5 11:27:31 | 显示全部楼层

  1. class B
  2. {
  3.         public var _type:String  = "Rectangle";
  4.         public function B(targetMc:MovieClip)
  5.         {
  6.                 trace("this is b");
  7.                 targetMc._type= this._type;
  8.                 targetMc.getType = this.getType;
  9.         }
  10.         public function getType()
  11.         {
  12.                 return this._type;
  13.         }
  14. }
复制代码

  1. class A extends MovieClip
  2. {
  3.         public var b:MovieClip;
  4.         public var c:MovieClip;
  5.         public var i:Number = 100;
  6.         public function A()
  7.         {
  8.                 //b = this.attachMovie ("b","b",this.getNextHighestDepth());
  9.                 var _b = new B(b);
  10.                 _b = new B(c);
  11.                 c._type = "icon";
  12.                 trace("b = "+b);
  13.                 trace("i = "+i);
  14.                 trace("b._type= "+b.getType());
  15.                 trace("c._type= "+c.getType());
  16.         }
  17. }
复制代码

想了下,给影片实例绑定类,无非也就添加一些属性和一些方法。不用在库中先绑定了,动态的通过类B直接来添加这些方法。但就是不能实现私有的了。
回复 支持 反对

使用道具 举报

发表于 2011-1-5 11:39:25 | 显示全部楼层
什么跟什么啊 怎么绑定一个属性要new 来 new去的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-5 12:20:26 | 显示全部楼层

回复 9# HSZZLZL 的帖子

这个只是个例子了,要是原来要绑定的类中有不少的属性和方法呢?单个当然没有这个必要了。
回复 支持 反对

使用道具 举报

发表于 2011-1-5 14:57:24 | 显示全部楼层
原帖由 [i]QWEASZ 于 2011-1-5 12:20 发表
这个只是个例子了,要是原来要绑定的类中有不少的属性和方法呢?单个当然没有这个必要了。


继承父类
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-5 15:05:48 | 显示全部楼层

回复 11# HSZZLZL 的帖子

呵呵,有点搞混了,其实还是在想一开始的情况。
回复 支持 反对

使用道具 举报

发表于 2011-1-5 15:21:51 | 显示全部楼层
原帖由 [i]QWEASZ 于 2011-1-5 15:05 发表
呵呵,有点搞混了,其实还是在想一开始的情况。

......................
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( ICP05002321 )  

GMT+8, 2019-8-18 08:56 , Processed in 0.124684 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表