Tween 问题

Tween 问题最近在研究 AS3 的 Tween 类 其程序结构和 AS2 的基本一样 不同的是事件绑定机制 不过我遇到了一个很奇怪的问题 写个帖子和大家分享一下体会 核心代码如下 30 帧每秒 importflash events MouseEvent importfl transitions


最近在研究AS3的Tween类,其程序结构和AS2的基本一样,不同的是事件绑定机制 。不过我遇到了一个很奇怪的问题,写个帖子和大家分享一下体会。 核心代码如下:

//30帧每秒 import flash.events.MouseEvent; import fl.transitions.Tween; import fl.transitions.easing.*; import fl.transitions.TweenEvent; function openPanel(event:MouseEvent):void { var myTween:Tween = new Tween(panelMC, "y", Bounce.easeOut, -800, 0, 15,, false); } panelMC是舞台上的一个MovieClip,用一个button click事件去触发openPanel函 数,让panelMC用15帧从y=-800变成y=0; 我测试了几次,发现有时候panelMC会停在那里不动。这种情况不是每次都出现, 根据观察,一次tween完成后,过若干秒,再按按钮,如此操作两边(即第三次触发事 件),就会 出现panelMC不动的情况。 于是我把TweenEvent的事件绑定上,想看一下哪一步出了问题。 function openPanel(event:MouseEvent):void { var myTween:Tween = new Tween(panelMC, "y", Bounce.easeOut, -800, 0, 15,, false); myTween.addEventListener(TweenEvent.MOTION_START, estart); myTween.addEventListener(TweenEvent.MOTION_STOP, estop); myTween.addEventListener(TweenEvent.MOTION_CHANGE, echange); myTween.addEventListener(TweenEvent.MOTION_FINISH, efinish); } function estart (event:TweenEvent):void { trace('start'); } function estop (event:TweenEvent):void { trace('stop'); } function efinish (event:TweenEvent):void { trace('finish'); } function echange (event:TweenEvent):void { trace(event.time); } 结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 stop finished 发现,此时是没有start的,google了一下,找到了答案:在绑定MOTION_START侦 听的时候,START已经触发了。于是将代码修改成 var myTween:Tween = new Tween(panelMC, "y", Bounce.easeOut, -800, 0, 15, , false); myTween.stop(); myTween.addEventListener(TweenEvent.MOTION_START, estart); myTween.start(); 这样就OK了。此问题和panelMC停顿无关,属于题外话。 事件绑定好之后再测试,发现echange函数会在开始执行不久变停止执行,意味着T Tween自行停止了。 结果如下: start 1 2 有时候执行到2结束,有时候是3。这个问题我百思不得其解,研究AS3的文档也没 有线索,最后在国外的论坛上找到了类似问题,老外给出的解决方法是:将Tween放到 一个数组中。根据他们的建议,我修改了一下代码, var tweens:Array = new Array(); var tween_count:Number; function openPanel(event:MouseEvent):void { tweens[tween_count] = new Tween(panelMC, "y", Bounce.easeOut, -800, 0, 15, false); tween_count++; } 问题果然解决了,不知道其他网友是否也遇到过类似的问题。 注:我做了一个测试程序,只放了一个panelMC和一个button,结果测了半天都很 正常,当Flash中出现其他的Tween就会出问题,老外也说他们是使用很多Tween的时候 会出问题,看来Tween虽然简便,但还是有危险的暗礁存在。

转址:http://www.newsmth.net/nForum/#!article/Flash/30070

转载于:https://www.cnblogs.com/flashweb/archive/2013/02/04/Actionscript.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226342.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午11:07
下一篇 2026年3月16日 下午11:08


相关推荐

  • 编译LAVFilters

    编译LAVFiltersLAV Filters编译全攻略0. Msys mingw安装1. Git安装2. Yasm下载3. Lavfiltes下载4. Ffmpeg下载5. Pkg-config 不用单独用gtk+包包含了很多工具和库用于mingw 【开发环境】直接下载的地址http://xhmikosr.1f0.de/tools/ 且包含了yasm zlib等已经弄好了。-j8也可

    2022年5月21日
    53
  • 观音站莲台浮雕灰度图[通俗易懂]

    观音站莲台浮雕灰度图[通俗易懂]观音站莲台浮雕灰度图转载于:https://www.cnblogs.com/fogwang/archive/2010/10/24/2666612.html

    2022年6月20日
    27
  • 工作流引擎对比

    工作流引擎对比工作流引擎对比

    2022年4月23日
    54
  • Meta Platforms 收购 Manus 以增强其代理型人工智能技能

    Meta Platforms 收购 Manus 以增强其代理型人工智能技能

    2026年3月15日
    2
  • C++中this指针的作用以及用法详解

    C++中this指针的作用以及用法详解为什么引用this指针?当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。1.this指针的作用指针存在于类的成员函数中,指向被调用函数类实例的地址。 一个对象的this指针并不是对象本身的一部分,不会影响sizeof()的结果。this指针的作用域是在类内部,当在类的非静态成员函

    2022年5月13日
    50
  • vue中axios的使用

    vue中axios的使用vue 中 axios 的使用 1 选择什么网络模块 2 JSONP3 axios 的请求方式 4 axios 框架的基本使用 5 axios 发送并发请求 6 axios 的配置 6 1 全局配置 6 2 常见的配置选项 1 选择什么网络模块 2 JSONP3 axios 的请求方式网络请求模拟 http httpbin org 4 axios 框架的基本使用 1 新建 vue 项目 vueinitwebpa 安装 axios 依赖 npminstallax 0 18 0sa

    2025年9月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号