Я писал код для механизма перетаскивания, который вызывает ожидание в течение небольшого периода времени перед началом операции перетаскивания.
Но я получаю это сообщение об ошибке в функции mouseDownHandler ().
TypeError: Error #1006: startDrag is not a function.
at Function/<anonymous>()[C:\blahblah_8216\bobo\flex2\src\ui\map\WorldMap.as:105]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at SetIntervalTimer/onTimer()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
Я нашел решение, немного изменив код, объявив переменную клона _me из this
private var _me:WorldMap;
Создайте его в конструкторе
public function WorldMap(){
_me = this;
}
Замена этого на _me в приведенном ниже коде работает без ошибок
Код
public var dragInProgress:Boolean = false;
private var dragTime:int = 100;
private var dragInProgressInt:int;
private function mouseDownHandler(event:MouseEvent):void {
trace(this.name," mouse down ",getTimer());
dragInProgressInt = setTimeout(function():void
{
dragInProgress = true;
this.startDrag(false,new Rectangle(Config.GAME_SCREEN_WIDTH - Config.FULL_GAME_SCREEN_WIDTH,
Config.GAME_SCREEN_HEIGHT - Config.FULL_GAME_SCREEN_HEIGHT,
Config.FULL_GAME_SCREEN_WIDTH - Config.GAME_SCREEN_WIDTH,
Config.FULL_GAME_SCREEN_HEIGHT - Config.GAME_SCREEN_HEIGHT));
}, dragTime);
}
private function mouseUpHandler(event:MouseEvent):void {
clearTimeout(dragInProgressInt);
setTimeout(function():void
{
dragInProgress = false;
this.stopDrag();
}, 1);
Может кто-нибудь сказать мне, почему это происходит?