Re: [問題] Flash Builder Binding失敗

看板Flash作者 (【賣幾客.羊】)時間15年前 (2010/07/04 02:31), 編輯推噓3(3013)
留言16則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《MagicYan (【賣幾客.羊】)》之銘言: : 小弟不才正在處理一個project,由於flex的binding實在很好用 : 於是大量使用它來做處理,其中 : mx.binding.utils.BindingUtils : 裡的bindSetter()是我蠻愛用的手工binding function : 大致上用起來也沒什麼大問題,也很愉快,但在某些情況下 : binding會失敗,失敗的狀況如下: : 自訂一個Singleton的類別放許多參數用來binding,在flash裡頭製作 : 許多flash動畫,也用自訂類別跟它綁定並匯出成swc給Flash Builder使用, : 與flash動畫綁定的外部as裡只要寫到有關Singleton類別裡的相關屬性或方法, : 如此一來  : BindingUtils.bindSetter(setFunction, Singleton.getInstance(), "property") : 就會失效,而且奇怪的是有時候偶爾會成功(時好時壞),Binding.bindProperty() : 也試過,一樣有這問題… : 不曉得這問題出在哪裡?或者是bug? 煩惱了好幾天 >"< 這是自己寫的Singleton類別,基本上是照本宣科 package { [Bindable] public class GameScene { public var currentScene:String; public function GameScene(s:SingletonEnforcer) {} private static var _instance:GameScene; public static function getInstance():GameScene { if(GameScene._instance==null) { GameScene._instance = new GameScene(new SingletonEnforcer()); } return GameScene._instance; } } } class SingletonEnforcer{} 在主程式mxml裡,當主程式creationComplete時寫上: BindingUtils.bindSetter(this.changeScene, GameScene.getInstance(), "currentScene"); 與 private function changeScene(sceneName:String):void { trace(sceneName); } 只要GameScene.getInstance().currentScene = "someScene"; 就會trace出一些字串,基本上若是這樣執行都是ok的,但只要swc存在,且 swc裡的as存在 GameScene.getInstance().currentScene = "someScene"; 的一些function,這binding就會失敗,感謝解答。 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.219.194

07/04 02:35, , 1F
"SWC存在"與"SWC理的AS存在"意思是?
07/04 02:35, 1F

07/04 02:45, , 2F
就是flash與外部類別的as綁定再匯出成swc,外部類別as裡
07/04 02:45, 2F

07/04 02:46, , 3F
只要存在GameScene.getInstance().currentScene....
07/04 02:46, 3F
※ 編輯: MagicYan 來自: 114.45.219.194 (07/04 02:46)

07/04 02:48, , 4F
swc是給flash builder使用的
07/04 02:48, 4F

07/04 02:57, , 5F
你的SWC是怎麼做出來的?用Flash內部的指令嗎?
07/04 02:57, 5F

07/04 02:58, , 6F
如果不是用Flex SDK來編譯SWC,我記得meta tag是無效的
07/04 02:58, 6F

07/04 03:00, , 7F
用flash cs5的command->conver symbol to Flex component
07/04 03:00, 7F

07/04 03:00, , 8F
再publish
07/04 03:00, 8F

07/04 03:02, , 9F
有時則是用Flash Builder直接插入Flash Professional
07/04 03:02, 9F

07/04 03:03, , 10F
Component,它會直接叫Flash cs5出來,按done 它會自動
07/04 03:03, 10F

07/04 03:03, , 11F
匯出swc
07/04 03:03, 11F

07/04 12:01, , 12F
你製作SWC時,是不是有包含到同一份AS,導致GameScene
07/04 12:01, 12F

07/04 12:02, , 13F
出現多次,所以有時候改這個、重新發佈 正常,有時候不正
07/04 12:02, 13F

07/04 12:02, , 14F
常,跟發佈順序有關
07/04 12:02, 14F

07/04 12:50, , 15F
對,有包含到同一份as,那順序應該是怎樣才正確呢?
07/04 12:50, 15F

07/04 14:17, , 16F
查出問題所在了...果然跟邦大說的一樣,感謝cj大與邦大
07/04 14:17, 16F
文章代碼(AID): #1CBu7fog (Flash)
文章代碼(AID): #1CBu7fog (Flash)