【发布时间】:2011-04-20 09:35:50
【问题描述】:
我想将 Country() 中的自定义事件发送到 MenuButton();
国家事件
package {
import flash.events.Event;
public class CountryEvent extends Event {
public static const COUNTRY_HOVERED:String = "onCountryOver";
private var _countryName:String = "";
public function CountryEvent(type:String, countryName:String, bubbles:Boolean=true, cancelable:Boolean=false) {
super(type, bubbles, cancelable);
_countryName = countryName;
}
public function get countryName():String {
return _countryName;
}
public override function clone():Event
{
return new CountryEvent(type,countryName,bubbles,cancelable);
}
}
} 国家级
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
public class Country extends MovieClip
{
private var countryEvent:CountryEvent;
public function Country()
{
this.addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
}
private function onMouseOver(e:MouseEvent):void
{
countryEvent = new CountryEvent("onCountryOver",this.name);
dispatchEvent(countryEvent);
}
}
private function onMouseOut(e:MouseEvent):void
{
}
}
}
菜单按钮类
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import CountryEvent;
public class MenuButton extends MovieClip {
public var countryName:String = "";
public function MenuButton() {
this.buttonMode = true;
this.addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
this.addEventListener(CountryEvent.COUNTRY_HOVERED,onCountryOver);
}
private function onCountryOver(e:CountryEvent):void {
if(e.countryName == countryName) {
this.gotoAndPlay(2);
}
}
private function onMouseOver(e:MouseEvent):void {
this.gotoAndPlay(2);
}
private function onMouseOut(e:MouseEvent):void {
this.gotoAndPlay(11);
}
}
}
当悬停一个国家/地区时,将调度一个自定义事件,我希望 MenuButton 监听该事件,并且如果传递的参数与其名称相同,则高亮显示。 Country Class 是我在舞台上拥有的国家电影剪辑的基类,MenuButton 是菜单按钮的基类
这个活动好像一直打不通
提前致谢
【问题讨论】:
-
您好,您的不同元素(国家、菜单按钮)是如何添加到舞台的?他们有同一个父母吗?您可能还想从示例中删除补间,因为它们独立于您遇到的问题并降低了问题的可读性。
-
它们不是由代码添加的,而是世界动画剪辑的一部分。 world.Germany , world.Spain 等。我会从不相关的东西中清除代码。
标签: actionscript-3 events dispatch