作者MagicYan (【卖几客.羊】)
看板Flash
标题Re: [问题] Flash Builder Binding失败
时间Sun Jul 4 02:31:01 2010
※ 引述《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
1F:推 cjcat2266:"SWC存在"与"SWC理的AS存在"意思是? 07/04 02:35
2F:→ MagicYan:就是flash与外部类别的as绑定再汇出成swc,外部类别as里 07/04 02:45
3F:→ MagicYan:只要存在GameScene.getInstance().currentScene.... 07/04 02:46
※ 编辑: MagicYan 来自: 114.45.219.194 (07/04 02:46)
4F:→ MagicYan:swc是给flash builder使用的 07/04 02:48
5F:推 cjcat2266:你的SWC是怎麽做出来的?用Flash内部的指令吗? 07/04 02:57
6F:→ cjcat2266:如果不是用Flex SDK来编译SWC,我记得meta tag是无效的 07/04 02:58
7F:→ MagicYan:用flash cs5的command->conver symbol to Flex component 07/04 03:00
8F:→ MagicYan:再publish 07/04 03:00
9F:→ MagicYan:有时则是用Flash Builder直接插入Flash Professional 07/04 03:02
10F:→ MagicYan:Component,它会直接叫Flash cs5出来,按done 它会自动 07/04 03:03
11F:→ MagicYan:汇出swc 07/04 03:03
12F:推 ben0209:你制作SWC时,是不是有包含到同一份AS,导致GameScene 07/04 12:01
13F:→ ben0209:出现多次,所以有时候改这个、重新发布 正常,有时候不正 07/04 12:02
14F:→ ben0209:常,跟发布顺序有关 07/04 12:02
15F:→ MagicYan:对,有包含到同一份as,那顺序应该是怎样才正确呢? 07/04 12:50
16F:→ MagicYan:查出问题所在了...果然跟邦大说的一样,感谢cj大与邦大 07/04 14:17