如何编写 Flash 动作脚本来进行此鼠标操作?

Posted

技术标签:

【中文标题】如何编写 Flash 动作脚本来进行此鼠标操作?【英文标题】:How to write the Flash actionscript to makes this mouse action? 【发布时间】:2015-03-22 03:32:04 【问题描述】:

我有点难以描述我需要的效果。 当我按下鼠标并向上移动,然后松开,它转到下一页。当我按下鼠标并向下移动它,然后松开,它转到上一页。 这就像在智能手机中交换桌面。 我对 Flash actionscript 不太熟悉。 我有一个实现这个效果的想法,就是当我按下鼠标(MOUSE_DOWN)时,检测到鼠标的Y位置,当我松开鼠标(MOUSE_UP)时,检测到另一个Y位置。 当旧 Y > 新 Y 时,转到 prevFrame(),当新 Y > 旧 Y 时,转到 nextFrame()。 谁能帮我用 actionscript 写它?我尝试但失败了,因为我真的无法理解脚本......

【问题讨论】:

【参考方案1】:

有几种方法可以实现您正在寻找的东西,我建议您也检查一下Touch/Gesture 事件,另外,检查这个库Gestouch(非常强大且有据可查,并且有几个@987654324 @)

为了帮助您理解如何开始理解ActionScript 和这个有问题的逻辑,我写了这个简单的例子,仅用于教育目的(不使用触摸/手势事件或适当的命名代码约定等),您可以根据您能够从我在此答案中提到的示例和相关链接中提取的内容应用您自己的逻辑和需求。

*

// control for Y position when mouse down
var downY:Number = 0;
// control for Y position when mouse up
var upY:Number = 0;

// control for X position when mouse down
var downX:Number = 0;
// control for X position when mouse up
var upX:Number = 0;

// vertical or horizontal control (if true, we use the Y position, if false we use the X)
var verticalControl:Boolean = true;

// adding an event listeter to detect the mouse down state (you can apply the same for your own Object (sprite with image, or whatever you have in mind)
stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler, false, 0, true);

function downHandler(event:MouseEvent):void

     stage.removeEventListener(MouseEvent.MOUSE_DOWN, downHandler);
     stage.addEventListener(MouseEvent.MOUSE_UP, upHandler, false, 0, true);

     // collecting current Y and X position (mouse down state)
     downY = event.localY;
     downX = event.localX;


function upHandler(event:MouseEvent):void

    stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
    stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler, false, 0, true);

    // collecting current Y and X position (mouse up state)
    upY = event.localY;
    upX = event.localX;

    // checking if should use Y or X position
    (verticalControl) ? frameActionScope(upY, downY) : frameActionScope(upX, downX);
 

 function frameActionScope(newValue:Number, oldValue:Number):void
 
     // using your logic (When the old Y > new Y , go to prevFrame(), and when the new Y > old Y, go to nextFrame())
     (newValue >= oldValue) ? nextFrameScope() : prevFrameScope();
 

 function nextFrameScope():void
 
     trace('next frame');
 

 function prevFrameScope():void
 
     trace('previous frame');
 

希望你能帮助到你。

【讨论】:

感谢您的帮助,我将尝试理解它并应用我的逻辑。感谢您告诉我有关触摸/手势事件的信息。这是我第一次来***,因为实在找不到懂actionscript的人来帮助我……我因为无法解决这个问题差点精神崩溃……非常非常非常感谢。 【参考方案2】:

在 gPeart 发布的解决方案中,除了坐标之外,您还可以添加一些代码来捕获鼠标按下/释放的时间戳。这样,您可以计算滑动的长度、方向和速度。对于非常低的速度或非常小的距离,您可以忽略滑动;让它感觉它只响应真正的滑动。

【讨论】:

正如我所说的,这只是一个简单的示例,可以实现多个控件以使其精确。非常到位! 非常好的建议,如果我能成功理解actionscript,我会尝试。

以上是关于如何编写 Flash 动作脚本来进行此鼠标操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何用按键精灵实现游戏多开,鼠标按键同步操作

子数涵数·Flash——初识ActionScript

如何制作:鼠标滑过GIF图片表面,鼠标地下荡开水波或是随着鼠标动作,飘动一连串花瓣……

Flash 动作脚本

如何从 flash 中的动作脚本发布到 wordpress

如何使用动作脚本控制 Flash 中的 FLV 播放?