flex 自定义事件一个小问题
这是我定义的类packageviews{importflash.events.Event;importmx.states.OverrideBase;publicclass...
这是我定义的类
package views
{
import flash.events.Event;
import mx.states.OverrideBase;
public class Th extends Event
{
public var types:String;
public var name:String;
public function Th(name:String)
{
super(type);
this.name=name;
}
public override function clone():Event
{
return new Th(name);
}
}
}
下面是我定义的组件
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Metadata>
[Event(name="dos",type="views.Th")]
</fx:Metadata>
<fx:Script>
<![CDATA[
import views.Th;
public var gg:String;
protected function but_clickHandler(event:MouseEvent):void
{
gg=textIn.text;
var ev:Th=new Th(textIn.text);
this.dispatchEvent(ev);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:Button x="152" y="182" label="按钮" id="but" click="but_clickHandler(event)"/>
<s:TextInput x="125" y="93" id="textIn"/>
</s:Group>
最后是我弄的一个应用程序
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:ns1="*">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import views.Th;
public function han(e:Th):void
{
Alert.show(e.name);
}
]]>
</fx:Script>
<ns1:thing x="203" y="115" dos="han(event)">
</ns1:thing>
</s:Application>
就是不知道为什么到最后无法运行 han函数,成功之后,另外加分 展开
package views
{
import flash.events.Event;
import mx.states.OverrideBase;
public class Th extends Event
{
public var types:String;
public var name:String;
public function Th(name:String)
{
super(type);
this.name=name;
}
public override function clone():Event
{
return new Th(name);
}
}
}
下面是我定义的组件
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Metadata>
[Event(name="dos",type="views.Th")]
</fx:Metadata>
<fx:Script>
<![CDATA[
import views.Th;
public var gg:String;
protected function but_clickHandler(event:MouseEvent):void
{
gg=textIn.text;
var ev:Th=new Th(textIn.text);
this.dispatchEvent(ev);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:Button x="152" y="182" label="按钮" id="but" click="but_clickHandler(event)"/>
<s:TextInput x="125" y="93" id="textIn"/>
</s:Group>
最后是我弄的一个应用程序
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:ns1="*">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import views.Th;
public function han(e:Th):void
{
Alert.show(e.name);
}
]]>
</fx:Script>
<ns1:thing x="203" y="115" dos="han(event)">
</ns1:thing>
</s:Application>
就是不知道为什么到最后无法运行 han函数,成功之后,另外加分 展开
展开全部
我个人认为是你这个事件类的问题 我做了下修改你测试一下
public class Th extends Event
{
public var name:String;
public function Th(name:String,type:String)
{
super(type);
this.name=name;
}
public override function clone():Event
{
return new Th(name,type);
}
}
你原来的东西你定义了一个type后面还带个s 结果super中是 type 变量是types,不知道这是否是其中一个错误,另外 你的type你根本没有给进去啊,你在派发的时候把内容给了name 。我表达能力不是很好,总之你试试吧 派发的时候 name 应该是你这个事件传递时需要的数据 type才是你派发的类型 随便给个字符串吧,给什么字符串 就监听什么字符串。另外我每看到你监听啊,在派发之前必须要执行过addEventListner才会生效
public class Th extends Event
{
public var name:String;
public function Th(name:String,type:String)
{
super(type);
this.name=name;
}
public override function clone():Event
{
return new Th(name,type);
}
}
你原来的东西你定义了一个type后面还带个s 结果super中是 type 变量是types,不知道这是否是其中一个错误,另外 你的type你根本没有给进去啊,你在派发的时候把内容给了name 。我表达能力不是很好,总之你试试吧 派发的时候 name 应该是你这个事件传递时需要的数据 type才是你派发的类型 随便给个字符串吧,给什么字符串 就监听什么字符串。另外我每看到你监听啊,在派发之前必须要执行过addEventListner才会生效
展开全部
protected function but_clickHandler(event:MouseEvent):void
{
gg=textIn.text;
var ev:Th=new Th(textIn.text,true);
this.dispatchEvent(ev);
}
注意这里事件第二个参数为true
{
gg=textIn.text;
var ev:Th=new Th(textIn.text,true);
this.dispatchEvent(ev);
}
注意这里事件第二个参数为true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var ev:Th=new Th("dos");
this.dispatchEvent(ev);
现在你再看看?
this.dispatchEvent(ev);
现在你再看看?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var ev:Th=new Th(textIn.text);
<fx:Metadata>
[Event(name="dos",type="views.Th")]
</fx:Metadata>
没有保持一至,new Th("dos")就可以了。
建议用静态变态来为事件命名。在自定义事件中添加静态变量并赋值。
public static var MyEventName:string = "MyEventName";
var ev:Th=new Th(Th.MyEventName);
<fx:Metadata>
[Event(name=Th.MyEventName,type="views.Th")]
</fx:Metadata>
<fx:Metadata>
[Event(name="dos",type="views.Th")]
</fx:Metadata>
没有保持一至,new Th("dos")就可以了。
建议用静态变态来为事件命名。在自定义事件中添加静态变量并赋值。
public static var MyEventName:string = "MyEventName";
var ev:Th=new Th(Th.MyEventName);
<fx:Metadata>
[Event(name=Th.MyEventName,type="views.Th")]
</fx:Metadata>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询