作者fatcats (心灵律动^^)
看板Flash
标题[问题] SWFLoader里面的swf的method
时间Sun Jun 21 11:48:03 2009
目的:
在主档案里面想要呼叫load进来的swf里面的function
该读进来的swf 名称为Sample.mxml
里面有一个函式是public function setText(str:String):void
做了什麽:
一开始先在SWFLoader 宣告的时候 creationComplete="init()"
private function init():void
{
this.swfContent = this.swfLoader.content as SystemManager;
}
然後写按钮A按下时触发的函式:
private function callFuncHandler():void
{
Sample(this.swfContent.application).setText("Hello World!!");
}
=================以上是可以通过的正确版本===============================
因为印象中
this.swfContent.application[元件名称] 是可以找到对应的!! 也会compile过!!
想问一下以下方式问题会出现在哪呢!? (替换掉黄色那一行)
this.swfContent.application[setText("aaa")]
this.swfContent.application.setText("aaa")
谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.70.196.70
1F:→ aquarianboy:附个完整的原始档会比较容易懂 06/21 12:16
2F:→ jugu:[setText('aaa')]抓到的是[setText的return值] 06/22 07:53
3F:→ jugu:跟xxx.setText同义的是xxx['setText'] 06/22 07:54
4F:→ aquarianboy:其实打包成一个压缩档会比贴程式码来得清楚.. 06/22 14:54
//这是可以的!!
//Sample_4_3_3_SWF(this.swfContent.application).swfLabel.text = "Hello World";
//Sample_4_3_3_SWF(this.swfContent.application).setText("Hello World");
成功的原因在於有转型 就像String(number) => String
3 "3"
才可以使用里面的方法!!
this.swfContent.application['setText']("Hello World");
属性可以直接被找到所以不用转型
其实...果然是江湖一点诀....
我本来以为Sample_4_3_3_SWF() 括号里面是丢参数进去@@a
原来是转型 ... 那就比较能理解了...
谢谢 ^____^
※ 编辑: fatcats 来自: 219.70.196.70 (06/22 15:41)