Flash AS3 脚本化眼睛不与其他图层动画进行补间
Posted
技术标签:
【中文标题】Flash AS3 脚本化眼睛不与其他图层动画进行补间【英文标题】:Flash AS3 Scripted eyes do not tween with other layer animation 【发布时间】:2016-10-07 03:03:57 【问题描述】:感谢阅读。 我在 Flash 中有一个小动画,其脚本可以使眼睛跟随鼠标。这会在鼠标单击时进一步向上动画,但脚本化的眼睛不会跟随补间。 我已经将眼睛对象嵌入到主动画层中,但这似乎也没有遵循。 我有点困惑,预计我错过了一些基本的结构/分层问题 - 但我有点茫然,担心不是我,那么它是 Flash 和脚本层工作中的错误还是什么一起什么的:(
无论如何,我附上实际的 .fla 和 .swf 是徒劳的,你们这些出色的家伙可以传递给我的任何帮助都是徒劳的。
https://drive.google.com/open?id=0B4yGmvZlwZmWanJJX1IzTk5pYXM
我真的很想知道为什么以及如果这里有一些我从根本上错过的东西怎么办。 (我没有在眼睛实例的符号转换高级选项对话框中检查 AS3,但这并没有影响交互式眼睛部分,我怀疑它不应该是冲突的原因 - 很高兴错了当然在这里 :)) 编辑:这是该项目的代码最初是一个 youtube tut,展示了如何使用 mouseMove 事件控制一些眼睛对象的圆周运动
//this is an action script window
//we can code into here :)
this.stop();
this.loop = false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, MoveEyes);
stage.addEventListener(MouseEvent.MOUSE_DOWN, PlayTimeline);
function MoveEyes(e:MouseEvent): void
var mouseYPosition = mouseY - EyeR.y;
var mouseXPosition = mouseX - EyeR.x;
var radiusR = Math.atan2(mouseYPosition, mouseXPosition);
var degreesR = radiusR / (Math.PI / 180);
EyeR.rotation = degreesR;
mouseYPosition = mouseY - EyeL.y;
mouseXPosition = mouseX - EyeL.x;
var radiusL = Math.atan2(mouseYPosition, mouseXPosition);
var degreesL = radiusL / (Math.PI / 180);
EyeL.rotation = degreesL;
//when clicked start the animation
function PlayTimeline(e: MouseEvent) : void
this.play();
...公平地说,我当然很高兴自己错了,但是,我不认为代码导致错误或与错误有任何关系,可能更多是我的舞台层位置或其他东西这些行,因此是完整的 .fla 文件,以便比我更好的人指出我的错误。
祝大家好运,再次感谢您在这里阅读和抽出时间。 :) 粗暴的
【问题讨论】:
可以给我们一些代码什么的吗? 嘿Glitcher,是的。但是带有代码的完整 .fla 在提供的链接上......但是。我也在这里进行了快速编辑以显示代码 :) 只需每秒交换机器 :) 有趣的是,在这里我发现了一个与我的问题有关的问题,我将在此处重新发布链接,但我的问题仍未解决。但是,有了这个我可能会到达某个地方,它可能会帮助其他人更快地找到。 ***.com/questions/977422/…> 除此之外,我现在已经稍微改变了我的策略并转向纯脚本,因为在对象的控制代码和利用时间线同时为其设置动画之间似乎存在一个主要问题。这个问题一直没有解决,但现在我对位置结果有了更多的控制权。 【参考方案1】:这实际上是一个非常有趣的错误。我相信正在发生的事情是,通过与眼睛的属性进行交互,您可以将其从时间轴补间中移除。
您最好的选择是简单地重新制作时间线补间代码,如下所示:
function PlayTimeline(e: MouseEvent) : void
this.play();
new Tween(EyeL, "y", fl.transitions.easing.None.easeInOut, EyeL.y, 141.95, 100);
new Tween(EyeR, "y", fl.transitions.easing.None.easeInOut, EyeR.y, 141.95, 100);
这会提供您需要的效果。但是,如果您开始弄乱时间线动画,则需要更改补间,所以最好将所有补间代码侧移动?
编辑:我注意到,除非您继续移动鼠标,否则鸟在移动时眼睛不会动画。对此的解决方案是将 mouseEvent 侦听器更改为 enterframe 侦听器,以便无论鼠标是否移动,它都会在每一帧发生。这不是最好的解决方案,因为它有点矫枉过正,但做其他任何事情都可能涉及一些计时器或第三方库,我认为目前这不是绝对必要的
【讨论】:
以上是关于Flash AS3 脚本化眼睛不与其他图层动画进行补间的主要内容,如果未能解决你的问题,请参考以下文章