كيفية كتابة الأحداث لمكون مخصص في Flex؟
-
22-09-2019 - |
سؤال
لقد كتبت مكونًا مخصصًا لرسم دائرة في Flex. ولكن عندما أحاول كتابة حدث نقرة أو حدث Mousedown لهذا المكون ، فإنه لا يعمل.
لدي مكون الدائرة داخل Vbox.
<mx:VBox label="Currents Quote" width="100%" backgroundColor="#DDDDDD">
<comp:MyCircle id="circlle" x1="175" y1="150"
radius="140" click='{Alert.show("Hello");}'
mouseDown="handleMouseDown(event);"/>
<comp:MyLine x1="175" y1="104"/>
</mx:VBox>
private function handleMouseDown(event:MouseEvent):void {
var pt:Point = new Point(event.localX, event.localY);
pt = event.target.localToGlobal(pt);
pt = circlle.globalToContent(pt);
var whichColor:String = "border area";
if (pt.x < 150) {
if (pt.y < 150)
whichColor = "red";
else
whichColor = "blue";
}
else {
if (pt.y < 150)
whichColor = "green";
else
whichColor = "magenta";
}
Alert.show("You clicked on the " + whichColor);
}
مكون الدائرة:
package components
{
import mx.core.UIComponent;
public class MyCircle extends UIComponent
{
public var x1:int;
public var y1:int;
public var radius:int;
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
graphics.lineStyle(1, 0x000000);
graphics.drawCircle(x1, y1, radius);
graphics.lineStyle(1, 0x000000);
graphics.drawCircle(x1, y1, radius-40);
graphics.lineStyle(1, 0x000000);
graphics.drawCircle(x1, y1, radius-100);
}
}
}
يتم عرض تنبيه "Hello" فقط عند نقطة معينة وتخمين ، عند هذه النقطة ، (175،150) تحسس X ، Y للدائرة. ولكن لا ينبغي عرضه أينما انقر على مكون mycircle ؟؟ كيفية تمكينها بهذه الطريقة؟
كما أن وظيفة mousedown لا تعمل مع mycircle ، ولكن إذا كان لديك الحدث الخاص بـ Vbox ، يتم عرض التنبيهات. لما ذلك؟ هل يمكن لأحد أن يرشدني؟
هل يجب أن أكتب أحداثًا للمكونات المخصصة بطريقة مختلفة؟
المحلول
لست متأكدًا مما إذا كان هذا قابلاً للتطبيق أم لا ، ولكن هناك خطأ حيث لم يتم التعرف على بعض الأحداث النقر/mousedown بشكل صحيح ما لم يكن لديهم لون خلفية. معرفة ما إذا كان إضافة لون الخلفية إلى دائرتك يساعد.
نصائح أخرى
هناك أيضًا بعض الأخطاء في التعليمات البرمجية الخاصة بك ، على سبيل المثال ، أنت تفتقد علامات البرنامج النصي حول ActionScript ، وقد تحتاج إلى استيراد التنبيه.
<mx:VBox label="Currents Quote" width="100%" backgroundColor="#DDDDDD">
<comp:MyCircle id="circlle" x1="175" y1="150"
radius="140" click='{Alert.show("Hello");}'
mouseDown="handleMouseDown(event);"/>
<comp:MyLine x1="175" y1="104"/>
</mx:VBox>
<mx:Script>
<![CDATA[
private function handleMouseDown(event:MouseEvent):void {
var pt:Point = new Point(event.localX, event.localY);
pt = event.target.localToGlobal(pt);
pt = circlle.globalToContent(pt);
var whichColor:String = "border area";
if (pt.x < 150) {
if (pt.y < 150)
whichColor = "red";
else
whichColor = "blue";
}
else {
if (pt.y < 150)
whichColor = "green";
else
whichColor = "magenta";
}
Alert.show("You clicked on the " + whichColor);
}
]]>
</mx:Script>