请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 7927|回复: 6

[FLASH IDE] flash传参问题总结 [复制链接]

SUNXINZHE 楼主

sunxinzhe

银牌会员

帖子
421
体力
1375
威望
6
居住地
广东省 深圳市
发表于 2008-5-30 20:17:34 |显示全部楼层
今天有人问我FLASH传参的问题,即如何用loadMovieNum调用外部SWF文件的变量,现在想借此总结下,以免哪天我失忆给忘掉了。

假设主影片想载入外部影片myswf.swf并调用其舞台的一个变量bianliang,我赋值22
顺着提问者的要求,我用
loadMovieNum("myswf.swf",5["POST"])
trace(_level5.bianliang)
结果呢,undefined

纳闷了,没道理啊,我用onEnterFrame事件输出即
_root.onEnterFrame=function(){
   trace(_level5.bianliang)
}

输出为:undefined
       22
       22
       。
        。
        。

似乎明白了一点,为什么第一次输出是undefined,而后却正常呢


初步猜测:是第一次输出时SWF文件还没有载入完毕,所以是undefined
那该如何解决呢,该如何准确调用我想要的变量呢

于是想到了用movieClipLoader的loadClip方法,监视加载进度,当onLoadInit时执行trace
代码如下:
var myML=new movieClipLoader()
myML.addListener(this)
this.onLoadInit=function(){
   trace(_level5.bianliang)
}
myML.loadClip("myswf.swf",5,"POST")



所以在此强烈建议用movieClipLoader的loadClip方法传递外部FLASH参数
也许loadmovienum可以达到同样效果,只是我没发现,有其他想法的也可以补充上来,大家共同学习!!

最后添加一个问题,也是在解决那位朋友问题中会到的一个很棘手问题,如下:影片老是冲不过第三祯,举个例子,我在第一祯写入gotoAndPlay(4),在第三祯写入trace(“3”),在第四祯写入trace(“4”),测试输出3,但我单独新建一个影片,是正常的,请问有哪些因素会导致冲不过第三祯。
西部数码顶级域名注册商39元抢注!

小闪暗夜

高级会员 手机认证 

帖子
258
体力
997
威望
0
居住地
海南省 海口市
发表于 2008-5-30 22:13:43 |显示全部楼层
说得对 要做网络上的FLASH网站 极度不赞同用loadMovieNum/loadMovie来加载SWF或者图片,由于网络延迟问题会导致很多参数变量都不能正常显示,虽然在本地测试没问题的 但是一到网络上 就会尝到苦头了,刚做FLASH站的时候为了这个差点推翻做了好几天的东西...
movieClipLoader虽然比loadMovieNum难用点 但是这是解决的网络问题的一个很好方法
另贴一个加载类供大家使用
  1. class loadImg
  2. {
  3.         public function loadImg(ob:MovieClip, uri:String, func:Function,loadText:TextField,loadMC:MovieClip){
  4.                 if(ob && uri) {
  5.                         var mcldr = new MovieClipLoader();
  6.                         var ldrob = new Object();
  7.                         var loadnum:Number;
  8.                         ldrob.onLoadStart = function(tmc) {
  9.                                 //var loadProgress = mcldr.getProgress(tmc);
  10.                         }
  11.                         ldrob.onLoadProgress = function(tmc, loadedBytes, totalBytes) {
  12.                                 loadnum=int(loadedBytes/totalBytes*100);
  13.                                 if(loadText!=undefined){
  14.                                         loadText.text= "loading"+loadnum+"%"
  15.                                 }
  16.                                 if(loadMC!=undefined){
  17.                                         loadMC.gotoAndStop(loadnum);
  18.                                 }
  19.                         }
  20.                         ldrob.onLoadComplete = function(tmc) {
  21.                                 //var loadProgress = mcldr.getProgress(tmc);
  22.                         }
  23.                         ldrob.onLoadInit = function(tmc) {
  24.                                 if(func && typeof func == "function") {
  25.                                         func(tmc);
  26.                                 }
  27.                         }
  28.                         ldrob.onLoadError = function(tmc, errc){
  29.                         }
  30.                         mcldr.addListener(ldrob);
  31.                         mcldr.loadClip(uri, ob);
  32.                 }               
  33.         }
  34. }
复制代码

-------------------------------使用方法
import loadImg;
new loadImg(所装载图片或者SWF的MC,所加载图片或者SWF的路径,function (ob){
                                        ob._width=50;
                                        ob._height=50;
                                        ob._x=0;
                                        ob._y=0;
                                          //这个函数为加载完毕后所做事,ob为加载进来后的图片或者SWF,可以对它设置大小等
                        },显示已加载数据百分比的TXT动态文本,100帧的加载条动画);
如果不想要文本 或者加载条,可以设置为null
------------------------------------
附上源文件一个

[ 本帖最后由 moyu0921 于 2008-5-30 22:21 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

膝盖中箭

超级版主 手机认证 

帖子
2974
体力
12966
威望
76
发表于 2008-5-30 22:46:58 |显示全部楼层
虽然已经是老话题了,但还是鼓励一下.
在加载外部文件时都需要在加载完毕后才可以调用.
珍惜生命,远离IT

使用道具 举报

SUNXINZHE 楼主

sunxinzhe

银牌会员

帖子
421
体力
1375
威望
6
居住地
广东省 深圳市
发表于 2008-5-31 01:43:19 |显示全部楼层
工夫没白费,希望能引起更多人的重视
有了2楼提供的类,相信又能为更多懒人造福了
不过我想懒人应该是在懂得原理的情况下为提高效率而“懒”
所以弄通最重要
个人觉得定义类的做法很好,省去了不知多少不必要的重复

使用道具 举报

头发甩甩

高级会员

帖子
419
体力
1404
威望
0
居住地
河北省 石家庄市
发表于 2008-5-31 15:14:37 |显示全部楼层
很经典的帖子啊.收藏了!!!
投入便快乐。

使用道具 举报

SUNXINZHE 楼主

sunxinzhe

银牌会员

帖子
421
体力
1375
威望
6
居住地
广东省 深圳市
发表于 2008-5-31 23:39:10 |显示全部楼层

回复 natty84 在 5# 的帖子

经典谈不上,只能算是个总结,我只是通过语言表达出来了而已

使用道具 举报

帖子
1
体力
19
威望
0
发表于 2008-10-6 09:46:35 |显示全部楼层

不错

呵呵,正在解决此问题

使用道具 举报

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

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:13 , Processed in 0.084825 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部