2014-12-16 3 views
1

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

код:

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; 
} 

// ... 
+0

Это гениально blvz. работал. Простое исправление и никогда бы не осознало этого. Спасибо за помощь –

Смежные вопросы