Flash 横幅中的 AS3 视差效果阻止 Movieclip 按钮运行

Posted

技术标签:

【中文标题】Flash 横幅中的 AS3 视差效果阻止 Movieclip 按钮运行【英文标题】:AS3 parallax effect in Flash banner preventing Movieclip buttons from functioning 【发布时间】:2015-08-23 06:30:23 【问题描述】:

我正在制作富媒体 Flash 横幅广告。我有 3 到 4 个带有 AS3 视差效果的圆形 MovieClip 按钮。看起来像 EnterFrame 循环在 AS3 中创建了效果。但是当我分配 MouseEvent Click 事件时,各个 Movieclip 按钮将不起作用。当单击 MC 时,我希望视差运动停止并播放头前进到主时间线上的特定标签。 我确信这可以做到,但我缺乏专业知识。代码如下:

//add an event listener to trigger every frame
addEventListener(Event.ENTER_FRAME, onFrame);

//set a constant that marks the centre of the stage
//the stage is 600 x 400, so we halve that
const stageCentre:Point=new Point(180,300);

//set an easing constant
const ease:Number=0.2;

function onFrame(e:Event) 
//create a point to store the distances the mouse is from the centre
var mouseOffset:Vector3D=new Vector3D(stageCentre.x-mouseX,stageCentre.y-mouse Y, 0);

//move each background layer by a different percentage of offset
//the easing constant is used here to create smoother results

//foreground moves the most; 75% of the mouse offset
clip1_mc.x+=(stageCentre.x+mouseOffset.x*0.70 - clip1_mc.x)*ease;
clip1_mc.y+=(stageCentre.y+mouseOffset.y*0.50 - clip1_mc.y)*ease;

//mid-ground moves a medium amount; 50% of the mouse offset
clip2_mc.x+=(stageCentre.x+mouseOffset.x*1.00 - clip2_mc.x)*ease;
clip2_mc.y+=(stageCentre.y+mouseOffset.y*1.00 - clip2_mc.y)*ease;

//background moves the least; 25% of mouse offset
clip3_mc.x+=(stageCentre.x+mouseOffset.x*1.75 - clip3_mc.x)*ease;
clip3_mc.y+=(stageCentre.y+mouseOffset.y*1.00 - clip3_mc.y)*ease;



//Click on button to go to and Play "kelsey" label (this does NOT work)

clip1_mc.kelsey_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void

MovieClip(root).gotoAndStop("kelsey");

【问题讨论】:

【参考方案1】:

确保clip1_mc 位于最顶层,它可能与赶上鼠标点击事件的其他剪辑重叠。

如果您在所有图层中都有按钮,则需要禁用除按钮之外的所有内容的鼠标事件。例如,如果您在每个影片剪辑中都有一个“按钮”和一个“背景”,并且您只想保持按钮可点击,请在该影片剪辑中执行以下操作:

background.mouseEnabled = false;
background.mouseChildren = false;

这样后台就不会监听任何鼠标交互

【讨论】:

感谢您的回复 - 但 MC 中没有背景。 MC 由纯色组成。其中有 3 个,它们位于不同的层上。 Flash 文件中唯一的元素是 3 个圆圈,直到我得到这个【参考方案2】:

鼠标点击动画片段时添加removeEventlistener

clip1_mc.kelsey_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void

this.removeEventListener(Event.ENTER_FRAME, onFrame);
MovieClip(root).gotoAndStop("kelsey");

【讨论】:

感谢您的帮助——我之前尝试过,即使删除事件侦听器 onFrame 会停止视差移动,并且在单击 clip1_mc 时所有圆圈都停止移动,但 gotoAndPlay 部分不起作用。一定有其他代码干扰了只想在时间线上推进播放头的代码。 (?)非常令人沮丧!

以上是关于Flash 横幅中的 AS3 视差效果阻止 Movieclip 按钮运行的主要内容,如果未能解决你的问题,请参考以下文章

actionscript3/Flash中的半色调效果

AS3 Flash 中的类型强制

flash as3.0 图片自动添加

flash as3如何获取实例名字中的数字

AS3 Flash中的类型强制

ActionScript 3 AS3横幅模板