Actionscript 3 潮汐框架的初始化
我正在尝试使用GDS潮汐框架。我的基本代码是:Actionscript 3 潮汐框架的初始化,actionscript-3,apache-flex,actionscript,graniteds,Actionscript 3,Apache Flex,Actionscript,Graniteds,我正在尝试使用GDS潮汐框架。我的基本代码是: <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" preinitialize="Tide.getInstance().
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
preinitialize="Tide.getInstance().initApplication()">
<fx:Script>
<![CDATA[
import controllers.TestController;
import events.TestEvent;
import models.TestModel;
import models.interfaces.ITestModel;
import mx.events.FlexEvent;
import org.granite.tide.Tide;
[Bindable][Inject]
public var testModel:ITestModel;
Tide.getInstance().addComponents([TestController, TestModel]);
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:Label text="{testModel.ab}" />
<s:Button click="dispatchEvent(new TestEvent());" label="test !" />
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
preinitialize="Tide.getInstance().initApplication()" creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import controllers.TestController;
import events.TestEvent;
import models.TestModel;
import models.interfaces.ITestModel;
import mx.events.FlexEvent;
import org.granite.tide.Tide;
[Bindable][Inject]
public var testModel:ITestModel;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
Tide.getInstance().addComponents([TestController, TestModel]);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:Label text="{testModel.ab}" />
<s:Button click="dispatchEvent(new TestEvent());" label="test !" />
我可以编译和运行我的代码,但当我启动我的应用程序时,我会看到空白窗口,我的按钮或标签不会出现。不会触发任何错误
当我将代码更改为此代码时:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
preinitialize="Tide.getInstance().initApplication()">
<fx:Script>
<![CDATA[
import controllers.TestController;
import events.TestEvent;
import models.TestModel;
import models.interfaces.ITestModel;
import mx.events.FlexEvent;
import org.granite.tide.Tide;
[Bindable][Inject]
public var testModel:ITestModel;
Tide.getInstance().addComponents([TestController, TestModel]);
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:Label text="{testModel.ab}" />
<s:Button click="dispatchEvent(new TestEvent());" label="test !" />
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
preinitialize="Tide.getInstance().initApplication()" creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import controllers.TestController;
import events.TestEvent;
import models.TestModel;
import models.interfaces.ITestModel;
import mx.events.FlexEvent;
import org.granite.tide.Tide;
[Bindable][Inject]
public var testModel:ITestModel;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
Tide.getInstance().addComponents([TestController, TestModel]);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:Label text="{testModel.ab}" />
<s:Button click="dispatchEvent(new TestEvent());" label="test !" />
它在我看到标签和按钮时起作用,但我的标签没有正确初始化,因为我的控制器和模型添加到mx.events.FlexEvent.CREATION\u COMPLETE
event
第一种(也是推荐的)方法有什么不对吗?我可以看看您是如何定义控制器和模型的吗?你在看吗?是的,我在看医生。当我启动提供的示例(并由GDS团队编写)时,情况是一样的。当我使用较旧的GDS swc库(名为granite essential.swc)时,它很有用。我不明白为什么即使解决方法只是在creationComplete事件方法中使用addComponents方法。我不明白为什么我不是GraniteDS专家,但在我看来,在您的第一个示例中,Tide的
addComponents
是在initApplication
之前执行的。这是故意的吗?