2010-02-21 7 views
6

से ईवेंट कैसे प्रेषित करें मेरे पास छोटे शतरंज एप्लिकेशन हैं जिनमें सेल्स और बोर्ड शामिल हैं। उपयोगकर्ता बोर्ड के लिए एक आइटम की ओर बढ़ता है, मैं एक घटना प्रेषण करने के लिए बोर्ड सेल तो बोर्ड यह बात सुनो और एक श्रोता फोन कर सकते हैंएएस 3: एक्शनस्क्रिप्ट क्लास

public class BoardCell extends Canvas 
{ 
    public function Sample():void 
    { 
     ....Some code 
     var e:Event = new Event("newMove") 
    dispatchEvent(e); 
    } 
} 

हालांकि चाहते हैं, मैं (मूल शतरंज बोर्ड कक्षा में घटना को नहीं पकड़ सकते सुनिश्चित करें कि मैं सही ढंग से)

public class FrontEndBoard extends ChessBoard 
{ 

    private var initialPoition:String; 

    public function FrontEndBoard() 
    { 
     //TODO: implement function 
     this.addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
     this.addEventListener("newMove", moveEvent); 
     super(); 
    } 

उत्तर

5

आप 2 विकल्प हैं इसके लिए सुन नहीं: बजाय this.addEventListener ("newMove", moveEvent) की

1); BoardCell.addEventListener ("newMove", moveEvent) करें;

2) माता-पिता को घटना buble ऊपर है (यह मानते हुए BoardCell FrontEndBoard का प्रदर्शन बच्चे, आप घटना निर्माता में एक पैरामीटर के रूप में सेट)

वर ई है: इवेंट = नई घटना ("newMove" ,सच) ।

1

बोर्डसेल श्रेणी से प्रेषित होने वाली घटना को बबल करना चाहिए, इसलिए यह किसी भी मूल वर्ग में पकड़ा जाता है। इवेंट क्लास के कन्स्ट्रक्टर तर्कों की जांच करें जहां आप "बुलबुले" ध्वज को सत्य पर सेट कर सकते हैं।

4

मुझे यकीन नहीं है कि फ्रंटएंडबोर्ड और बोर्डसेल आपके आवेदन में श्रेणीबद्ध रूप से कैसा है, लेकिन आपको "newMove" ईवेंट को बताने की आवश्यकता हो सकती है कि यह bubble कर सकता है।

var e:Event = new Event("newMove", true);