2014-01-05 81 views
0

我有一个名为控制台的swf加载另一个swf名称级别。级别有一个叫做pauseLevel的函数,它从控制台调用。在loadLevelDone处理期间调用pauseLevel函数。当消息框显示或单击暂停按钮时也会调用它。第一次加载的功能pauseLevel功能正常工作。当pauseLevelloadLevelDone期间被调用时,它第二次加载它会引发以下错误。错误#1034:类型强制失败:无法将BugEvent @ 51a4f81转换为BugEvent

TypeError: Error #1034: Type Coercion failed: cannot convert [email protected] to BugEvent. at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.display::Stage/dispatchEvent() at LevelMain/pauseLevel() at Main/pauseLevel()[C:\Users\Herb\Documents\Flash\BugEscape\console\code\Main.as:1811] at Main/loadLevelDone()[C:\Users\Herb\Documents\Flash\BugEscape\console\code\Main.as:1658]

这是pauseLevel代码:

public function pauseLevel():void 
    { 
     if (levelPaused){ 
      stage.dispatchEvent(new BugEvent(BugEvent.PAUSE_GAME, 0, 0, 3,"unpause")); 
      levelPaused = false; 
     }else{ 
      stage.dispatchEvent(new BugEvent(BugEvent.PAUSE_GAME, 0, 0, 3,"pause")); 
      levelPaused = true; 
     } 
    } 

这是我的事件处理程序:

public class BugEvent extends Event{ 

    public static const COIN_HIT: String = "cHit"; 
    public static const BOX_HIT: String = "bHit"; 
    public static const ADD_POINTS: String = "addPoints"; 
    public static const EXIT_HIT: String = "eHit"; 
    public static const JUMP: String = "jump"; 
    public static const KILL_BUG: String = "kBug"; 
    public static const KILL_PLAYER: String = "kPlayer"; 
    public static const REMOVE_BUG: String = "rBug"; 
    public static const REMOVE_BOX: String = "rBox"; 
    public static const PLAY_SX: String = "playSX"; 
    public static const DB_DONE: String = "dbDone"; 
    public static const PAUSE_GAME: String = "pauseGame"; 
    public var tileX:int; 
    public var tileY:int; 
    public var swapTo:int; 
    public var killType:String; 
    public var eventValue:int; 

    public function BugEvent(type:String,tx:int,ty:int,st:int,kt:String="",ev:int = 0,bubbles:Boolean=false, cancelable:Boolean=false) 
    { 
     tileX = tx; 
     tileY = ty; 
     swapTo = st; 
     killType = kt; 
     eventValue = ev; 
     super(type, bubbles, cancelable); 
    } 

    override public function clone():Event 
    { 
     return new BugEvent (type,tileX,tileY,swapTo,killType,eventValue, bubbles, cancelable); 
    } 
} 

回答

0

检查一下您是否进口的相同BugEvent,检查,如果你有几个 “BugEvent”在你的项目中。

举例来说,如果你有

com.buglife.BugEvent 而 com.buglife.event.BugEvent

这将是不同类

+0

谢谢,我不知道我有两个当我正在开发课程时,通过包装加载一个,直接导入一个 – user3162885

相关问题