You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Newgrounds论坛找到的makeMcShake脚本正常运行?

Flash影片剪辑震动脚本解析与使用指南

一、脚本工作原理

这个脚本专为Flash的MovieClip(影片剪辑)实现随机震动效果,核心逻辑分为四部分:

  • 全局变量AMOUNT:控制震动幅度,数值越大,影片剪辑偏移初始位置的范围越广。
  • makeMcShake函数:给目标影片剪辑记录初始坐标(存在自定义属性defaultPos中),同时绑定EnterFrame事件——该事件会在每帧渲染时触发(每秒执行次数等于Flash项目帧率)。
  • shake函数:每帧执行时,给影片剪辑的x、y坐标添加随机偏移。偏移范围是-AMOUNT/2到+AMOUNT/2之间(Math.random()生成0-1的随机数,乘以AMOUNT后减去一半,得到正负对称的偏移值),以此模拟震动效果。
  • stopMcShake函数:移除EnterFrame事件停止震动,同时将影片剪辑放回初始位置。

注意:原脚本存在两处错误,不修正无法正常运行:

  1. 对象字面量写法错误:{which.x, which.y}需改为{x: which.x, y: which.y},AS3要求明确键名。
  2. 随机数方法写错:Math.rand()是笔误,Flash中正确的随机数方法为Math.random()。

二、使用方法

步骤1:准备Flash项目

在Flash舞台上放置需要震动的影片剪辑,在属性面板给它设置实例名(比如shake_mc)。

步骤2:添加修正后的脚本

将修正后的脚本放到时间轴的关键帧上(比如第一帧):

var AMOUNT = 20; // 根据需求调整震动幅度

function makeMcShake(which:MovieClip)
{
    which.defaultPos = {x: which.x, y: which.y};
    which.addEventListener(Event.EnterFrame, shake);
}

function stopMcShake(which:MovieClip)
{
    which.removeEventListener(Event.EnterFrame, shake);
    which.x = which.defaultPos.x;
    which.y = which.defaultPos.y;
}

function shake(e:Event)
{
    var target:MovieClip = e.currentTarget as MovieClip;
    target.x = target.defaultPos.x + Math.random() * AMOUNT - AMOUNT / 2;
    target.y = target.defaultPos.y + Math.random() * AMOUNT - AMOUNT / 2;
}

步骤3:触发与停止震动

通过事件(按钮点击、游戏剧情触发等)调用函数控制震动:

  • 启动震动:makeMcShake(shake_mc)(替换shake_mc为你的影片剪辑实例名)
  • 停止震动:stopMcShake(shake_mc)

示例:按钮控制震动

// 假设舞台上有两个按钮,实例名分别为start_btn和stop_btn
start_btn.addEventListener(MouseEvent.CLICK, startShakeHandler);
stop_btn.addEventListener(MouseEvent.CLICK, stopShakeHandler);

function startShakeHandler(e:MouseEvent):void {
    makeMcShake(shake_mc);
}

function stopShakeHandler(e:MouseEvent):void {
    stopMcShake(shake_mc);
}

内容的提问来源于stack exchange,提问作者Johnson Yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:40:16