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 按钮运行的主要内容,如果未能解决你的问题,请参考以下文章