我是Flash的新手,作为一个学校项目,我被告知使用Flash创建一个功能齐全的网页。我在photoshop中完成了大量纹理,并且相当成功地让它们执行正确的动画。但是我想在角落里有一个静音按钮,当激活时会在两个纹理之间切换。我遇到的问题是让他们真正做任何事情。
正如我所说,我完全知道并且不知道编码的语法或布局。我已经阅读了大量的教程,并且我总是遇到编译器错误,例如“包不能嵌套”或“Muted不能被访问等等”。
目前我有两个名为“Muted”和“UnMuted”的按钮图层。我真的需要一些建议,因为我很快就会失去耐心。我目前没有代码可以给你们,因为我所得到的一切都不起作用,而且似乎非常不准确。
提醒一下,我使用Adobe Flash CS3和ActionScript 3。
感谢您提供任何帮助!
答案 0 :(得分:1)
我真的很讨厌听起来像“Programatticus Takeoveriticus”(与我的团队一直在开玩笑),但大多数Flash程序员都知道它们的“纹理”可能不是最好的方法。通常,纹理是指用于填充区域的图像。
根据您的信息,我假设您的“纹理”是图像...可能以.png或.gif格式保存?您要做的是将它们导入您的库。
我使用的是CS5.5,所以这可能有些偏差,但对于CS3来说这应该是关闭的。
转到文件 - >导入 - >导入库...
选择要使用的图像,然后按“导入”。它们将出现在您的图书馆窗格中,通常位于屏幕的右侧(但可能位于其他地方,具体取决于您的布局。如果您遇到问题,请使用“窗口”菜单查找它。)
现在,转到插入 - >新符号...
为该符号命名。符号名称的最佳做法是仅使用字母数字字符和下划线(无空格或其他标点符号)。
现在,选择一个类型。我建议使用MovieClip。
别忘了其他一切,然后按“确定”。您的舞台将切换到仅编辑该MovieClip。
看看你的时间表。这个很重要。单击时间轴上的第一帧,然后将图像中所需的图像从库中拖动到舞台上。使用“自由变换”工具根据需要调整大小。
现在,单击刚刚放置的图像。转到“属性”窗格并将其位置设置为0左,0顶。
现在,在时间轴中,单击第二帧。重复上述步骤,将图像静音。请注意,第二张图像的大小与第一张图像完全相同。
将两个图像放在时间轴上后,在相应的帧中单击第一帧。转到“操作”选项卡(右键单击框架,然后单击“操作”)。
输入以下声明。
stop();
使用第二帧重复此操作。
停止();语句只是告诉Flash保持在该帧上,直到被代码告知否则。
现在,在顶部,单击蓝色的“后退”按钮返回主舞台。您刚刚创建的对象将位于舞台上的某个位置。 (如果不是,请将其从库中拖到舞台上。)将此对象放在所需的位置,并根据需要调整大小。
单击该对象以将其选中,然后转到“属性”窗格。在顶部,它显示“”,键入该对象实例的工作名称。如果你只在这个阶段使用它一次,只需给它与库中的名称相同(无论你之前命名的是什么。)对于这个例子,我只是称它为“btnMute”。
现在,在您拥有所有代码的区域,您需要输入以下内容:
//Here we create a boolean (true/false) variable for whether sound is muted.
var muted:Boolean = false;
//Create the event listener for when the mute button is clicked.
btnMute.addEventListener(MouseEvent.CLICK, muteSound);
//Here is the event handler for the above listener.
function muteSound(evt:MouseEvent):void
{
//If muted is true...
if(muted)
{
//Set muted to false
muted = false;
//Change button to "unmuted" state.
btnMute.gotoAndStop(1);
}
//If muted is false...
else
{
//Set muted to true
muted = true;
//Change button to "muted" state.
btnMute.gotoAndStop(2);
}
}
很多代码应该看起来很熟悉。我要指出的主要内容是行btnMute.gotoAndStop(...)
这允许您更改特定MovieClip上显示的帧。只需将语句中的“...”替换为您想要的帧编号即可。
或者,您可以使用代码btnMute.gotoAndPlay(...);
。因为每个帧上都有stop();
代码,所以会完成同样的事情。
gotoAndStop(...);
和gotoAndPlay(...);
之间的主要区别在于“AndStop”不执行框架上的任何代码,也不会在没有{{1}的情况下播放框架函数,而“AndPlay”会。
我希望这很有帮助。再次,抱歉推荐一种不同的方法,因为当人们对我这样做时,这是我的一个宠儿。但是,在大多数情况下,你会发现这种方法比隐藏和显示不同的项目更能做同样的事情。
答案 1 :(得分:0)
我不太确定,你的问题是什么,但试试这个。
创建一个新图层,调用“actions”并编写此代码:
//Listener added to your button.
btnAudio.addEventListener(MouseEvent.CLICK, f_muted);
//Init method to hide your textures.
function f_init():void {
img1.visible = false;//Texture 1
img2.visible = false;//Texture 2
}
// function to switch your textures
function f_muted(event:MouseEvent):void{
trace("switch images");
img1.visible = true;
}
f_init();//Hide Textures.
我希望这可以帮到你。