flash 如何实现长时间不操作自动返回第一帧……求大神指点迷津……跪谢……

 我来答
FlashASer

2015-10-02 · Animate,Photoshop,职场经验,人生感悟!
FlashASer
采纳数:14298 获赞数:18655

向TA提问 私信TA
展开全部
第一种方法,使用影片剪辑,做一个空的影片剪辑,放到舞台上,里面帧数和你的时间设置到一样,然后在最后一帧加代码让主时间轴回到第一帧。
第二种要用定时器类,Timer,TimerEvent,计时结束后,同样回到第一帧即可
更多追问追答
追问
请大神帮忙
怎么实现
第二种方法
秋色烽火
推荐于2016-05-18 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.5万
采纳率:37%
帮助的人:1.2亿
展开全部

写了一个封装类,有具体应用的fla例子,看附件

注意,这是as2版本,如果需要as3,请说明,我再更新。


/**
 * 长期鼠标、键盘不操作自动返回类
 * @author 秋色烽火
 */
class com.set2get.as2.ui.IntervalInit
{
private static var _instance:IntervalInit = new IntervalInit();
private var _taskList:Array = [];
private var _cid:Number = -1;
private var _mouseOBJ:Object;
private var _keyboardOBJ:Object;
private var _delay:Number = 1;
public function IntervalInit() 
{
_mouseOBJ = { };
_keyboardOBJ = { };
_mouseOBJ.onMouseDown = function():Void {
_instance.initCheck.apply(_instance);
}
_mouseOBJ.onMouseMove = function():Void {
_instance.initCheck.apply(_instance);
}
_keyboardOBJ.onKeyDown = function():Void {
_instance.initCheck.apply(_instance);
}
}
private function initCheck():Void {
clearInterval(_cid);
_cid = setInterval(this, "callInit",  _delay * 1000);
}
/**
* 没操作时执行
*/
private function callInit():Void {
clearInterval(_cid);
for (var i:Number = 0; i < _taskList.length; i++) {
var _obj:Object = _taskList[i];
_obj.func.apply(_obj.target);
}
}
/**
* 检查是否已经添加侦听
* @param$target
* @param$callFunction
* @return 如果已经添加,返回索引,否则未添加则返回-1
*/
public function hasTask($target:Object, $callFunction:Function):Number {
for (var i:Number = 0; i < _taskList.length; i++) {
var _obj:Object = _taskList[i];
if (_obj.target == $target && _obj.func == $callFunction) {
return i;
}
}
return -1;
}
/**
* 添加侦听
* @param$target函数执行域
* @param$callFunction 执行函数
*/
public function addTask($target:Object, $callFunction:Function):Void {
if (hasTask($target, $callFunction) != -1) return;
_taskList.push( { target:$target, func:$callFunction } );
checkTask();
_instance.initCheck.apply(_instance);
}
/**
* 移除侦听
* @param$target
* @param$callFunction
*/
public function removeTask($target:Object, $callFunction:Function):Void {
var _taskID:Number = hasTask($target, $callFunction);
if (_taskID != -1) {
_taskList.splice(_taskID, 1);
checkTask();
}
}
/**
* 移除所有函数侦听
*/
public function removeALLTask():Void {
_taskList = [];
checkTask();
}
private function checkTask():Void {
if (_taskList.length == 0 ) {
Mouse.removeListener(_mouseOBJ);
Key.removeListener(_keyboardOBJ);
} else {
Mouse.addListener(_mouseOBJ);
Key.addListener(_keyboardOBJ);
}
}
/**
* 获取类实例
*/
public static function get getInstance():IntervalInit {
return _instance;
}
/**
* 延时间隔,单位(秒),最小值不能低于1秒
*/
public function set delay($value:Number):Void {
if ($value < 1 ) return;
_delay = $value;
}
}


更多追问追答
追问
谢谢虽然还没有算看完凭大神的帮助先采纳……待不懂时在请教大神……谢谢
大神你好我实在很菜……上述你写的我太懂
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式