所以我在flash上做这个生成器/设计器。它具有不同的功能,因此考虑到许多动作脚本处理nextframes和gotos,关键帧与其他功能冲突。一旦我添加了一些小功能,它就会变得混乱。
就像现在我想为设计部分添加下一个按钮。我可以轻松地使用空白阶段轻松完成,我可以轻松地点击下一步和后退,但是当应用于我的项目时,它会让人感到有些眩晕。
这是第一帧的脚本:
stop();
small.addEventListener(MouseEvent.CLICK,play1);
function play1(event:MouseEvent):void{
gotoAndStop("3");
}
medium.addEventListener(MouseEvent.CLICK,play2);
function play2(event:MouseEvent):void{
gotoAndStop("6");
}
large.addEventListener(MouseEvent.CLICK,play3);
function play3(event:MouseEvent):void{
gotoAndStop("8");
}
item_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item_mc.addEventListener (MouseEvent.MOUSE_UP, itemRelease);
item_mc1.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item_mc1.addEventListener (MouseEvent.MOUSE_UP, itemRelease);
item_mc2.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item_mc2.addEventListener (MouseEvent.MOUSE_UP, itemRelease);
function dragTheObject(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.startDrag();
var topPos:uint=this.numChildren-1;
this.setChildIndex(item, topPos);
}
function itemRelease(event:MouseEvent):void {
var thisItem:MovieClip=MovieClip(event.target);
thisItem.stopDrag();
};
答案 0 :(得分:0)
MovieClips 有自己的时间轴。您可能希望模块化您的程序到Movieclip组件并导出 Actionscript 操作,您可以在实例化必要时运行时间。现在,这是避免代码分布在一个时间轴上的一种方法。但是如果你仍然想坚持自己的方式(使用单个时间轴),你仍然可以实现下一个/上一个实现,而不会影响任何速率的帧逻辑一个简单的方法就是这样:
分别在后续帧中传播您的组件和相关代码。 仅将与组件相关的代码放在具有相关组件的框架上。注册事件侦听器可以将目标作为其依赖项。定义事件监听器并将它们作为逻辑的一部分放在第1帧上,并根据需要简单地放置用于在组件帧上注册监听器的代码。
示例:
//On Frame 1
function onAMouseClick(event:Event):void
{
//implement logic
}
function onBMouseClick(event:Event):void
{
//implement logic
}
//Implemented function for next/back buttons
//Also on Frame 1
function navigate(event:Event):void
{
var frame:int;
switch(event.target.name)
{
case "nextBtn":
frame=currenFrame<numFrames?+1:numFrames;
gotoAndStop(frame);
break;
case "backBtn":
frame=currenFrame>2?-1:currentFrame;
gotoAndStop(frame);
break;
}
}
//On Frame 2 for A component
A.addEventListener(MouseEvent.CLICK, onAMouseClick)
//On Frame 3 for B component
B.addEventListener(MouseEvent.CLICK, onAMouseClick)
将“下一个/后退”按钮组件放在从第2帧一直延伸到您希望按钮可见的最后一帧结尾的单个图层上。然后实现相关代码,其可见性跨越帧2和最后一帧之间,如下所示:
//navigate handler is declared and implemented on **frame 1**
nextBtn.addEventListener(MouseEvent.Click, navigate)
nextBtn.addEventListener(MouseEvent.Click, navigate)
嗯,这是你做事的方式(单一时间线脚本)。对于简单的时间轴脚本来说也不错。您可以尝试另一种方式来实例化Movieclips(为动作脚本导出) 在运行时,根据需要将这些添加到显示列表中,点击下一个/后退按钮。这样做不仅会有一个逻辑点,而且会在每个单独的组件中封装MC代码。
希望前面的帮助。感谢。
答案 1 :(得分:0)
不要害怕改变代码!更别说害怕遇到错误了!这是前进的方式,你想要学习修复它的美丽! .....干杯!