एक पिछले प्रश्न ने मुझे सोच लिया है। क्या माउसईवेंट.किकिक को पहले ही एक MOUSE_DOWN के बाद एक MOUSE_UP द्वारा फायर करके निकाला जा सकता है।माउस डाउन और अप ईवेंट का उपयोग करके माउस क्लिक को सिम्युलेट करना संभव है?
एडोब के ड्यूमेंटेशन के अनुसार। "... एक क्लिक घटना होने के लिए, यह हमेशा घटना के क्रम में घटनाओं की इस श्रृंखला का पालन करना होगा: माउसडाउन ईवेंट, फिर माउसअप। लक्ष्य ऑब्जेक्ट इन दोनों घटनाओं के लिए समान होना चाहिए, अन्यथा क्लिक ईवेंट नहीं है माउसडाउन या माउसअप घटनाओं के बीच किसी भी समय अन्य माउस ईवेंट हो सकते हैं; क्लिक ईवेंट अभी भी होता है। " http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/InteractiveObject.html#event:click
मेरे परीक्षणों से यह दिखाता है कि क्लिक ईवेंट एक्शनस्क्रिप्ट 3 ईवेंट कतार से नहीं बनाया गया है। या कोड के साथ कुछ गलत है?
देखें:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
[SWF(backgroundColor="0xFFFFFF", frameRate="30", width="800", height="600")]
public class Test extends Sprite
{
private var spr:Sprite = new Sprite();
public function Test()
{
trace("Test()");
this.addEventListener(Event.ADDED_TO_STAGE,init);
}
public function init(e:Event):void
{
trace("init()");
spr.graphics.beginFill(0xFF0000);
spr.graphics.drawRect(0,0,200,80);
spr.graphics.endFill();
addChild(spr);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
spr.addEventListener(MouseEvent.CLICK, onClick);
}
private var tick:int = 0;
private function onEnterFrame(e:Event):void
{
if (tick == 1) spr.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN,true,false));
if (tick == 2) spr.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP,true,false));
if (tick == 3) spr.dispatchEvent(new MouseEvent(MouseEvent.CLICK,true,false));
tick++;
}
private function onClick(e:MouseEvent):void
{
trace("onClick() MouseEvent.CLICK dispatched");
}
}
}
मैं ') onClick (' एक के बजाय घटनाओं मिलना चाहिए दो।
आप सही हैं। यह एक नया क्लिक ईवेंट नहीं बना रहा है जब यह MOUSE_UP के बाद MOUSE_DOWN देखता है (संभवतः क्योंकि यह घटना लूप कोड में ऐसा करने के लिए बहुत अजीब होगा, और माउस इनपुट प्रोसेसिंग कोड में ईवेंट उत्पन्न करने के लिए और अधिक प्राकृतिक)। आपको मैन्युअल रूप से तीनों को आग लगाना होगा। मुझे लगता है कि दस्तावेज नियमित माउस घटनाओं का जिक्र कर रहा था; उन्हें मैन्युअल रूप से फायर करना, यह असंभव है कि ईवेंट ऑर्डर लागू करने वाला कोई विशेष कोड है। – Cameron
मुझे लगता है कि दस्तावेज भ्रमित कारण और थोड़ा सा प्रभाव डाल रहा है। उसी ऑब्जेक्ट पर माउस नीचे + माउस ऊपर एक क्लिक ईवेंट उत्पन्न होता है। परिणामस्वरूप सभी तीन एक्शनस्क्रिप्ट घटनाएं भेजी जाती हैं। रनटाइम एक्शनस्क्रिप्ट ईवेंट का उपयोग स्वयं यह निर्धारित करने के लिए नहीं करता है कि एक क्लिक ईवेंट प्रेषित करना है या नहीं। –