AS3 Flash Animation не полностью работает в Captivate 5,5

Привет, я сделал несколько Flash-анимаций ранее в AS3, все из которых импортируются и отлично работают в Captivate 5.5. Однако, одна из них, простая игра с перетаскиванием, не сработает. Он импортирует и виден в плену все работает с одной (раздражающей) проблемой. То есть объекты не будут попадать в соответствующие зоны сброса. Анимация отлично работает как SWF в моем браузере, но просто не будет работать, если использовать любые идеи? Схема кода ниже. Я рву свои волосы, любой совет будет принята с благодарностью.

код:

right_mc.visible=false; 
wrong_mc.visible=false;
var orig1X:Number=item1_mc.x;  
var orig1Y:Number=item1_mc.y;
item1_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item1_mc.addEventListener(MouseEvent.MOUSE_UP, item1Release);
item1_mc.buttonMode=true;    

function dragTheObject(event:MouseEvent):void { 
    var item:MovieClip=MovieClip(event.target); 
    item.startDrag(); 
  var topPos:uint=this.numChildren-1; 
    this.setChildIndex(item, topPos);    
}  

function item1Release(event:MouseEvent):void { 
    var item:MovieClip=MovieClip(event.target); 
    item.stopDrag();       
    if (dropZone1_mc.hitTestPoint(item.x,item.y)) { 
        item.x=dropZone1_mc.x; 
        item.y=dropZone1_mc.y; 
    } else { 
       item.x=orig1X; 
       item.y=orig1Y; 
    } 
};    

done_btn.addEventListener(MouseEvent.CLICK,checkAnswers);
function checkAnswers(event:MouseEvent):void { 
    if (dropZone1_mc.hitTestPoint(item1_mc.x,item1_mc.y) &&
     dropZone16_mc.hitTestPoint(item16_mc.x,item16_mc.y)) {
        wrong_mc.visible = false;
        right_mc.visible = true;
    } else {
        wrong_mc.visible = true;
        right_mc.visible = false;
    }
}

reset_btn.addEventListener(MouseEvent.CLICK,reset);
function reset(event:MouseEvent):void { 
    item1_mc.x=orig1X; 
    item1_mc.y=orig1Y;     

    right_mc.visible=false; 
    wrong_mc.visible=false; 
}

1 ответ

Решение

Так как hitTestPoint работает только с глобальными координатами. Когда вы открываете SWF-файл в браузере, локальные и глобальные координаты совпадают, поэтому он работает. Но когда вы загружаете его внутри Captivate, они отличаются.

Попробуй это:

import flash.geom.Point;

// ...

var localPoint:Point = new Point(item.x, item.y);
var globalPoint:Point = item.parent.localToGlobal(localPoint);
if (dropZone1_mc.hitTestPoint(globalPoint.x, globalPoint.y)) { 
    item.x = dropZone1_mc.x;
    item.y = dropZone1_mc.y;
}

// ...
Другие вопросы по тегам