MXML & dispatchEvent

שאלות ודיונים בכל הנוגע לפיתוח פלקס (Flex) ושפת MXML, פלקס מגרסאות 1.5 עד הנוכחית. בנוסף, דיונים בנושא טכנולוגיית AIR לשולחן העבודה (Adobe Integrated Runtime), פיתוח פלאש ל desktop או AIR ל Mobile. עם יציאתה של Slider, פורום זה ידון גם ב Framework הזה.

MXML & dispatchEvent

הודעהעל ידי פלג ב 07 דצמבר 2011, 23:38

יש לי MXML שקורא למתודה שנמצא ב CLASS.
ב CLASS המתודה קוראת ל WS ומחכה לתשובה אסינכרונית.
איך מהתשובה האסינכרונית אני שולח חזרה לפונקציה ב MXML את התוצאה?
Syntax: [ Download ] [ Hide ]
Using actionscript3 Syntax Highlighting
//step 1: call the function that will activate a WS
var objAccountManager:AccountManager=new AccountManager();
objAccountManager.GetEncryptedDecryptedPass("peleg","encrypt");
function getWsResult(){}
 
Parsed in 0.030 seconds, using GeSHi 1.0.8.4


Syntax: [ Download ] [ Hide ]
Using actionscript3 Syntax Highlighting
//step 2:
//how to send an event back from the class to the function getWsResult??
 
Parsed in 0.027 seconds, using GeSHi 1.0.8.4
פלג
 
הודעות: 546
הצטרף: 13 מרץ 2010, 16:07

Re: MXML & dispatchEvent

הודעהעל ידי atarsh ב 08 דצמבר 2011, 17:34

לפני שהמחלקה שמוגדרת ב-mxml (נקרא לה A בשביל הנוחות) קוראת לפונקציה על המחלקה הנוספת (נקרא לה B) שמתחילה את הפעולה הא-סינכרונית, תגרום למחלקה A להאזין לאירוע שמוגדר במחלקה B.
כשמחלקה B מקבלת את התשובה הא-סינכרונית שלה דספץ' את האיבנט, מחלקה B תשמע ותמשיך משם.
אם האיבנט הוא קאסטום אתה יכול ממש להעביר עליו את הdata המבוקש, אחרת אתה יכול להוסיף על מחלקה B איזשהו getter למידע הזה ומחלקה A תקרא לו בתגובה לאיבנט.
סמל אישי של המשתמש
atarsh
 
הודעות: 1310
הצטרף: 11 מרץ 2010, 09:02
מיקום: איפשהו.. around.

Re: MXML & dispatchEvent

הודעהעל ידי פלג ב 08 דצמבר 2011, 20:20

יש מצב לקוד דוגמא? :מסמיק:
פלג
 
הודעות: 546
הצטרף: 13 מרץ 2010, 16:07

Re: MXML & dispatchEvent

הודעהעל ידי atarsh ב 11 דצמבר 2011, 12:15

השתמשתי בטעינת קובץ טקסט בתור הפעולה הא-סינכרונית שלי, אתה כמובן מוזמן לעשות מה שבא לך.
מחלקה A:
Syntax: [ Download ] [ Hide ]
Using actionscript3 Syntax Highlighting
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                                xmlns:controls="com.kaltura.controls.*"
                                height="545" width="930" layout="vertical"
                                creationComplete="application1_creationCompleteHandler(event)">
        <mx:Script>
                <![CDATA[
                        import mx.events.FlexEvent;
                       
                        private var b:B;
                       
                        protected function application1_creationCompleteHandler(event:FlexEvent):void {
                                b = new B();
                                b.addEventListener("loadingComplete", onLoadComplete);
                        }
                       
                        private function onLoadComplete(e:Event):void {
                                trace (b.message);
                        }


                        protected function button1_clickHandler(event:MouseEvent):void
                        {
                                b.loadFile();
                        }

                ]]>
        </mx:Script>

        <mx:Button label="click me" click="button1_clickHandler(event)"/>
       
</mx:Application>
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


מחלקה B:
Syntax: [ Download ] [ Hide ]
Using actionscript3 Syntax Highlighting
package
{
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.net.URLLoader;
        import flash.net.URLRequest;

        public class B extends EventDispatcher{
               
               
                public var message:String = '';
               
                private var ldr:URLLoader;
               
                public function B()
                {
                }
               
                public function loadFile():void {
                        var req:URLRequest = new URLRequest("file.txt");
                        ldr = new URLLoader();
                        ldr.addEventListener(Event.COMPLETE, onDataLoaded);
                        ldr.load(req);
                }
               
               
                private function onDataLoaded(e:Event):void {
                        message = e.target.data;
                        dispatchEvent(new Event("loadingComplete"));
                }
        }
}
Parsed in 0.033 seconds, using GeSHi 1.0.8.4
סמל אישי של המשתמש
atarsh
 
הודעות: 1310
הצטרף: 11 מרץ 2010, 09:02
מיקום: איפשהו.. around.

Re: MXML & dispatchEvent

הודעהעל ידי פלג ב 17 דצמבר 2011, 22:49

תודה, איך אני מרחיב את זה גם להעברת ערכים כחלק מה dispatchEvent?
פלג
 
הודעות: 546
הצטרף: 13 מרץ 2010, 16:07

Re: MXML & dispatchEvent

הודעהעל ידי atarsh ב 19 דצמבר 2011, 12:49

במקום להשתמש באיבנט גנרי אתה כותב מחלקה שמרחיבה את Event, ומוסיף לה פרמטרים.
איפה שאתה מדספץ' את האיבנט תמלא גם את הפרמטרים האלה, ובמקום שבו אתה תופס את האיבנט תשתמש בהם.
סמל אישי של המשתמש
atarsh
 
הודעות: 1310
הצטרף: 11 מרץ 2010, 09:02
מיקום: איפשהו.. around.

Re: MXML & dispatchEvent

הודעהעל ידי פלג ב 19 דצמבר 2011, 13:26

תודה
פלג
 
הודעות: 546
הצטרף: 13 מרץ 2010, 16:07

Re: MXML & dispatchEvent

הודעהעל ידי atarsh ב 21 דצמבר 2011, 10:19

בכיף :)
סמל אישי של המשתמש
atarsh
 
הודעות: 1310
הצטרף: 11 מרץ 2010, 09:02
מיקום: איפשהו.. around.


חזור אל פיתוח Flex ו AIR

 


  • שרשורים בנושאים דומים
    תגובות
    צפיות
    הודעה אחרונה

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ואורח אחד