播放不同的帧onclick flash

时间:2012-07-28 14:49:02

标签: flash actionscript-2

我的框架中有2个符号:鹿和人。 我想在第45帧停止flash动画 如果用户点击鹿玩框架50-100 但如果用户点击男人我想玩框架 200 - 250.我在第45帧中的代码是:

stop();
var _buttons:Array = [deer, man];

for(var i = 0; i < _buttons.length; i++){
    _buttons[i].onRelease = function() {
        gotoAndPlay(100);
    }

    _buttons[i].onRelease = function() {
        gotoAndPlay(200);
    }
}

当影片在第45帧停止并且我点击某个对象时没有任何反应但没有错误。

3 个答案:

答案 0 :(得分:2)

如果您使用的是ActionScript 2,则遇到的问题是与对象范围相关的经典问题。它不是ActionScript 2错误,而是JavaScript规范。请考虑以下代码段

trace(this);  // it displays the movieclip that hosts the button
myButton.onRelease = function() {
    trace(this);  //oops, it is the button, not the host.
}

在不诉诸_root的情况下快速解决这个问题

stop();
var _buttons:Array = [deer, man];

trace("deer button: " + deer);
deer.context = this;
deer.onRelease = function() {
    trace("deer button is clicked.");
    deer.context.gotoAndPlay(100);
}

trace("man button: " + deer);
man.onRelease = function() {
    trace("man button is clicked.");
    man.context.gotoAndPlay(200);
}

更优雅的实现将使用delegate,因此您不必硬编码_root或“context”属性。

答案 1 :(得分:1)

尝试:

deer.onRelease = function() {
   this.gotoAndPlay(50);
   // make sure that is an stop(); Action on frame 100
}

man.onRelease = function() {
   this.gotoAndPlay(200);
   // make sure that is an stop(); Action on frame 250
}

你如何命名敏感的Moviclip或Button - “鹿”&amp; “人” ?使用不带帧编号的命名帧更好。转到关键帧重命名关键帧。然后你可以写例如:this.gotoAndPlay(“man_start”);

您将其标记为AS2 - 我希望我能帮助您。 最好的问候

编辑:确保您拥有gotoAndPlay的正确路径。当根音线上的按钮/剪辑时,您可以编写例如_root.gotoAndPlay(“man_start”)。如果按钮位于man剪辑中,您可以编写例如:

deer.your_named_button.onRelease = function() {
    this._parent.gotoAndPlay("man_start");
}

答案 2 :(得分:1)

现在,您可以在第一个关键帧(“start”,关键帧0)的操作面板中写入:

stop(); // you have write it in the first step

// klick on your deer button and name it "deer_btn", if isn't it
deer_btn.onRelease = function() {
    _root.gotoAndPlay("play_deer");
    trace("I pressed deer_btn"); // can you delete later
}

// klick on your man button and name it "man_btn", if isn't it
man_btn.onRelease = function() {
    _root.gotoAndPlay("play_man");
    trace("I pressed man_btn"); // can you delete later
}

这应该可行,但未经测试。笔记本上没有闪光灯。我希望它对你有所帮助。不许 - 问我。