【问题标题】:AS3 Flash Animation not fully working in captivate 5.5AS3 Flash 动画在 captivate 5.5 中无法完全运行
【发布时间】:2014-12-16 22:05:34
【问题描述】:

您好,我之前在 AS3 中做过一些 Flash 动画,所有这些动画都可以在 Captivate 5.5 中导入并运行良好。然而,其中之一,一个简单的拖放游戏是行不通的。它导入并在迷人的情况下可见,一切都解决了一个(恼人的)问题。也就是说,对象不会掉落到适当的放置区域。动画在我的浏览器中作为 SWF 可以正常工作,但在进入 captivate 时将无法正常工作 有任何想法吗?代码大纲如下。我正在撕扯我的头发,任何建议将不胜感激。

代码:

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

【问题讨论】:

    标签: actionscript-3 flash animation adobe-captivate


    【解决方案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;
    }
    
    // ...
    

    【讨论】:

    • 这真是太棒了。工作了一个款待。一个简单的修复,永远不会意识到这一点。感谢您的帮助
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多