im正在寫一個actionScript類來處理我的Web服務調用。當我檢索結果時,我想在我的主要mxml應用程序中調用setter方法。我的問題是,我不知道如何訪問我的主要mxml類的actionScript部分中的方法從我的動作類,任何想法?flex 3從actionscript代碼訪問主mxml
回答
David是對的 - 雖然您可以從應用程序的任何位置靜態訪問Application.mxml對象的公共成員,但從設計角度來看,這是一個不容否認的問題。爭取物體之間的鬆散耦合效果會更好,Flex成語中的方式通常是擴展EventDispatcher和派發事件。因此,例如,你的WebService的包裝可能是這個樣子:
public class MyWrapperClass extends EventDispatcher
{
[Event(name="webserviceComplete", type="flash.events.Event")]
public function MyWrapperClass(target:IEventDispatcher=null)
{
super(target);
}
private function handleWebServiceLoadComplete(event:ResultEvent):void
{
dispatchEvent(new Event("webserviceComplete"));
}
public function doWork():void
{
// Load the service, etc., and ultimately call handleWebServiceLoadComplete()...
}
}
...和你Main.mxml文件是這樣的:
<mx:Script>
<![CDATA[
private function app_creationComplete(event:Event):void
{
var myWrapper:MyWrapperClass = new MyWrapperClass();
myWrapper.addEventListener("webserviceComplete", mywrapper_webServiceComplete, false, 0, true);
myWrapper.doWork();
}
private function mywrapper_webServiceComplete(event:Event):void
{
// Do the work you would've otherwise done in the public method
}
]]>
</mx:Script>
在這種情況下,最終的結果是相同的 - - 完成Web服務負載將觸發Main.mxml中的函數。但請注意mywrapper_webServiceComplete()
是如何私下聲明的 - 它不會被MyWrapperClass
直接調用。當MyWrapperClass完成其工作時,Main.mxml只需訂閱(與addEventListener()
),然後完成自己的工作; MyWrapperClass對Main.mxml的實現細節一無所知,Main.mxml也不瞭解MyWrapperClass的任何內容,只是它分派了一個webserviceComplete
事件,並公開了一個公開的doWork()
方法。行動中隱藏的耦合和信息隱藏。
祝你好運!
如果您的類是添加到組件樹的UIComponent,那麼您可以使用它的parentApplication
屬性。否則,請使用靜態Application.application
屬性,但僅在應用程序初始化完成後。在此之前,該字段爲null
。私人領域和方法顯然無法訪問。在MXML部分聲明的元素明確地爲id
s是公共的。
雖然添加這樣的調用會創建一個剛性綁定。您可能需要考慮調度事件,並在主應用程序中處理此事件。
如果任何人有同樣的問題:
mx.core.FlexGlobals.topLevelApplication.YOUR_FUNCTION
是在main.mxml中訪問公共函數的語法。
- 1. ActionScript 3和mxml
- 2. flex mxml和actionscript-3有什麼區別?
- 3. 如何從Actionscript中定位MXML中的Flex 3數據網格?
- 4. 是否可以使用ActionScript 3代碼或MXML創建MovieClip?
- 5. 的ActionScript 3/MXML:我的代碼沒有做任何事情
- 6. 分析ActionScript-3代碼
- 7. 從mxml調用actionscript?
- 8. 從XML轉義到ActionScript 3代碼
- 9. 在Actionscript 3/flex
- 10. Flex MXML綁定vs Actionscript綁定
- 11. 如何訪問mxml(Flex)DOM元素?
- 12. Flex:如何讓代碼遠離MXML
- 13. Adobe Flex:從組件MXML中的主應用程序訪問結果事件
- 14. 從swf獲取MXML和ActionScript類
- 15. 將Actionscript 2代碼轉換爲Actionscript 3
- 16. 將Actionscript 2代碼轉換爲ActionScript 3
- 17. actionscript 2到actionscript 3我的代碼
- 18. 訪問的資源是從主代碼
- 19. Flex MXML佈局問題
- 20. ActionScript 3代碼爲Javascript
- 21. Flex 3:代碼隱藏問題
- 22. 從AS代碼調用一個MXML
- 23. 從Flex/ActionScript 3 Responder對象返回
- 24. 使用mxml連接ActionScript類(Socket)腳本代碼
- 25. 如何使用Actionscript 3,Flex 4 SDK和FlashDevelop從.fla文件訪問數據?
- 26. flex sdk actionscript 3編譯
- 27. 使用Flex(ActionScript 3的)
- 28. Flex 3 Actionscript Array Subtract功能
- 29. 將腳本代碼從Actionscript 2轉換爲Actionscript 3
- 30. Flex/Actionscript代碼突出顯示器