我的框架中有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帧停止并且我点击某个对象时没有任何反应但没有错误。
答案 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
}
这应该可行,但未经测试。笔记本上没有闪光灯。我希望它对你有所帮助。不许 - 问我。