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

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

搜索
查看: 1746|回复: 11

[AS3] 如果在类文件中输出场景中的影片剪辑实例

[复制链接]
发表于 2009-3-30 19:15:11 | 显示全部楼层 |阅读模式
fla主场景中有一影片剪辑实例名为testMc。如何在不设置文件类的方法下,可以从as类文件中输出fla主场景中的testMc影片剪辑实例?
fla代码如下:

  1. var test2:Test2=new Test2();
复制代码


类文件代码如下:

  1. package{
  2.         import flash.display.MovieClip
  3.         public class Test2 extends MovieClip{
  4.                 public function Test(){
  5.                         trace(testMc)
  6.                 }
  7.         }       
  8. }
复制代码
发表于 2009-3-30 21:01:17 | 显示全部楼层
侦听 addToStage 事件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-31 10:38:26 | 显示全部楼层
谢谢flash023的提示。
不过偶写的代码还是会提示错误。

  1. package {
  2.         import flash.display.MovieClip;
  3.         import flash.display.Stage;
  4.         import flash.events.*;
  5.         public class Test2 extends MovieClip {
  6.                 public function Test() {
  7.                         stage.addEventListener(Event.ADDED_TO_STAGE,traceFun);
  8.                 }
  9.                 public function traceFun() {
  10.                         trace(testMc);//这一行提示错误

  11.                 }
  12.         }
  13. }
复制代码

test.rar

5.7 KB, 下载次数: 189

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-31 13:28:50 | 显示全部楼层
提示的错误是:正在试图未定义的变量testMc。好像这样还是访问不到场景中的testMc。
回复 支持 反对

使用道具 举报

发表于 2009-3-31 13:31:03 | 显示全部楼层
public function traceFun() {
            trace(MovieClip(root).testMc);//这样试试
        }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-31 13:33:56 | 显示全部楼层
谢谢楼上的回复。
不过没有提示错误,也没有输出trace信息。
回复 支持 反对

使用道具 举报

发表于 2009-3-31 13:35:21 | 显示全部楼层
trace(MovieClip(root).testMc.name)看看,这样应该是可以访问的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-31 13:40:43 | 显示全部楼层
原帖由 [i]k5angle 于 2009-3-31 13:35 发表
trace(MovieClip(root).testMc.name)看看,这样应该是可以访问的


谢谢你,不过还是没有trace出信息。3楼有偶的测试源文件,可以的话,你可以下载下更改代码进行测试。
回复 支持 反对

使用道具 举报

发表于 2009-3-31 13:49:00 | 显示全部楼层
您这个类要访问舞台上的某个实例是不是应该在实例化的时候传个这个MC的引用进去呢。
或者这个类不直接操作MC, 仅仅处理数据,返回结果,然后发出一个事件让文档类来根据这个结果操作MC
这样耦合性是不是好点呢,程序是不时也好读点呢
回复 支持 反对

使用道具 举报

发表于 2009-3-31 13:51:32 | 显示全部楼层
AS代码有问题,改成如下
  1. package {
  2.         import flash.display.MovieClip;
  3.         import flash.display.Stage;
  4.         import flash.events.*;
  5.         public class Test2 extends MovieClip {
  6.                 public function Test2() {//这里是Test2,不是Test
  7.                         addEventListener(Event.ADDED_TO_STAGE,traceFun);//这里不需要stage
  8.                 }
  9.                 public function traceFun(_evt:Event) {
  10.                         trace(MovieClip(root).testMc)
  11.                 }
  12.         }
  13. }
复制代码

另外帮助文档中说“以下方法会触发此事件:DisplayObjectContainer.addChild()、DisplayObjectContainer.addChildAt()。”
所以fla里写上 var test2:Test2=new Test2();
addChild(test2);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-31 14:01:53 | 显示全部楼层
谢谢k5angle~!
1.偶又犯了粗心的毛病,将Test2写成了Test
2.是没有很好的理解帮助文件中的意思。呵。

也谢谢pigu的回复。
原帖由 [i]pigu 于 2009-3-31 13:49 发表
您这个类要访问舞台上的某个实例是不是应该在实例化的时候传个这个MC的引用进去呢。
或者这个类不直接操作MC, 仅仅处理数据,返回结果,然后发出一个事件让文档类来根据这个结果操作MC
这样耦合性是不是好点呢,程 ...

那个文档类的操作偶是会的。偶就是想测试看看没有文档类时,舞台上的实例是如何在类文件中获取到的。

总之很谢谢大家的回复~!
回复 支持 反对

使用道具 举报

发表于 2009-3-31 14:02:57 | 显示全部楼层
9#的用户名很有喜感
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-5-20 06:40 , Processed in 0.125000 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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