0

我对 Flash 完全陌生,作为一个学校项目,我被告知要使用 Flash 创建一个功能齐全的网页。我已经在 Photoshop 中完成了大量的纹理,并且相当成功地让它们执行正确的动画。但是我想在角落有一个静音按钮,当激活时会在两个纹理之间切换。我遇到的问题是让他们实际做任何事情。

正如我所说,我完全知道并且不知道编码的语法或布局。我已经阅读了大量的教程,我总是收到编译器错误,比如“无法嵌套包”或“无法访问静音等等”。

目前我有两个按钮层名为:“静音”和“取消静音”。我真的需要一些建议,因为我很快就会失去耐心。我目前没有代码可以给你们,因为我得到的一切都不起作用,而且似乎非常不准确。

提醒一下,我使用 Adob​​e Flash CS3 和 ActionScript 3。

感谢您提供的任何帮助!

4

2 回答 2

1

我真的很讨厌听起来像“Programatticus Takeoveriticus”(我的团队一直在开玩笑),但是大多数 Flash 程序员都知道的“纹理”可能不是最好的方法。通常,纹理是指用于填充区域的图像。

根据您的信息,我假设您的“纹理”是图像......可能以 .png 或 .gif 格式保存?您要做的就是将这些导入到您的库中。

我使用的是 CS5.5,所以这可能有点偏离,但对于 CS3 来说应该很接近。

转到文件->导入->导入到库...

选择要使用的图像,然后按“导入”。它们将出现在您的库窗格中,通常位于屏幕的右侧(但可能在其他位置,具体取决于您的布局。如果您遇到问题,请使用“窗口”菜单找到它。)

现在,转到插入-> 新符号...

为符号命名。符号名称的最佳做法是仅使用字母数字字符和下划线(无空格或其他标点符号)。

现在,选择一个类型。我为此推荐 MovieClip。

不理会其他所有内容,然后按“确定”。您的舞台将切换到仅编辑该影片剪辑。

看看你的时间线。这个很重要。单击时间轴上的第一帧,然后将您想要用于未静音图像的图像从库中拖到舞台上。使用自由变换工具根据需要调整大小。

现在,单击您刚刚放置的图像。转到“属性”窗格并将其位置设置为 0 left, 0 top。

现在,在时间轴中,单击第二帧。对图像重复上述步骤以进行静音。请注意,第二张图片的大小与第一张图片完全相同。

将两个图像放在时间轴上后,在相应的帧中,单击第一帧。转到“操作”选项卡(右键单击框架并单击“操作”)。

输入以下语句。

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”不执行帧上的任何代码,也不会在没有该stop();函数的情况下播放帧,而“AndPlay”会。

我希望这会有所帮助。再一次,很抱歉推荐一种不同的方法,因为当人们对我这样做时,这是我最讨厌的。但是,在大多数情况下,您会发现这种方式比隐藏和显示不同的项目来做同样的事情要好得多。

于 2012-06-13T02:32:25.087 回答
0

我不太确定,你的问题是什么,但试试这个。

  1. 创建一个按钮,放入您的舞台并在属性视图中命名为“btnAudio”
  2. 创建纹理 1,放入您的舞台并在属性视图中命名为“img1”,对名称为“img2”的纹理 2 执行相同操作
  3. 创建一个新层,调用“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.
    

我希望这可以帮助你。

于 2012-06-12T22:04:50.047 回答