作者zpl ()
看板Flash
标题Re: [问题] 请问怎麽让FLASH里的物件平滑移动
时间Thu May 23 11:11:33 2013
※ 引述《euph (咬咬嚼嚼猴子口味)》之铭言:
: 是这样的 我建立了一个MovieClip物件
: 我希望用键盘的上下键来上下移动这物件的位置
: 用最基础的 object._y += offset
: 会让物件在移动的时候有卡卡的感觉
: 有想要利用tween去试着补间
: 可是我的长度和移动距离都是动态给予
: 想请问一下 可以在AS里面去做tween吗??
: 如果可以 请问有没有参考的网站或例子可以分享呢??
: 谢谢各位前辈帮忙 :)
不好意思,重看了你的问题感觉好像搞错了你的意思。
看到tween就直觉回应那个网站,虽然那个也可以解决你的问题,
不过不太适合。
你的问题应该是感觉按下方向键时,会先动一下,再卡一下,然後才会正常连续移动。
如果是的话,那可以参考以下作法。
基本上这个问题是键盘事件触发原理所影响的,
通常我的作法是将按键 被按下、被放开 以及 enterFrame事件 分开处理
1.先设定一个变数或物件 是用来记录目标按键目前是否是被按下的
2.在被按下监听中 当为目标键时 将变数设定为被按下的状态
3.在被放开的监听中 当为目标键时 将变数设定为未被按下的状态
4.在enterFrame监听中 如果变数的状态是被按下 则执行要移动的方向
注:enterFrame可以用timer或是类似的功能去取代
如果你是用AS3的话 可以这样做
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
var keyStatus:Object = { };
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpEvent);
addEventListener(Event.ENTER_FRAME, onEnterFrameEvent);
function onKeyDownEvent(e:KeyboardEvent):void {
keyStatus[e.keyCode] = true;
}
function onKeyUpEvent(e:KeyboardEvent):void {
keyStatus[e.keyCode] = false;
}
function onEnterFrameEvent(e:Event):void {
if (keyStatus[Keyboard.UP] == true) {
// 执行往上移动事件
}
if (keyStatus[Keyboard.DOWN] == true) {
// 执行往下移动事件
}
}
如果是AS2 也是可以用类似的概念,不过我太久没用都忘记了
如果想要更平滑的移动 就再增加目前方向速度、加速度等参数来控制
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.238.181.128
※ 编辑: zpl 来自: 36.238.181.128 (05/23 11:15)