无法在 Button AS3 中引用 MovieClip
Unable to reference MovieClip inside Button AS3
我有一个恼人的问题,希望有人能帮助我解决。
我创建了一个静音按钮,并且在该按钮内有另一个动画片段。我想要它做的就是当我切换静音时,里面的动画片段将转到相应的帧。
但是,每次我尝试调用按钮内的动画片段时,都会出现此错误:
Access of possibly undefined property mcMuteToggle through a reference with static type flash.display:SimpleButton.
其中的动画片段的实例名称是 "mcMuteToggle"。
这可能是由于严格模式。您可以在 ActionScript 设置对话框中禁用它,使用不同的语法 myButton['mcMuteToggle']
访问它,或者为包含 属性 mcMuteToggle
.[= 的符号创建 class 13=]
您还可以检查以确保符号确实在舞台上并且该剪辑确实在按钮中:
if('myButton' in root) {
// ...
}
if('mcMuteToggle' in myButton) {
// ...
}
我想你只是覆盖了那些代码。你可以使用这样的东西:
var soundOpen:Boolean = true;
var mySound:Sound = new Sound(new URLRequest("Whatever your sound is"));
var mySc:SoundChannel = new SoundChannel();
var mySt:SoundTransform = new SoundTransform();
mySc = mySound.play();
mcMuteToggle.addEventListener(MouseEvent.CLICK, muteOpenSound);
function muteOpenSound(e:MouseEvent):void
{
if(soundOpen == true)
{
mcMuteToggle.gotoAndStop(2);
/*on frame 2 u need to hold ur soundClose buton so ppl can see :)*/
soundOpen = false;
mySt.volume = 0;
mySc.soundTransfrom = st;
}
else
{
mcMuteToggle.gotoAndStop(1);
soundOpen = true;
mySt.volume = 1;
mySc.soundTransfrom = st;
}
}
这每次都对我有用。希望你能用好它;)
为什么不制作像按钮一样的影片剪辑??因为我不认为实际的 button
(simpleButton) 类型可以处理子 MovieClip(特别是如果它们也有代码)。即使可能不这样做,我也可以预测 Button
会根据您在这些 MClip 中的代码来做它不应该做的事情。
尝试另一种按钮方法,仅用于测试...您没有显示任何可用的测试代码,所以我会做出假设...
1) 制作一个形状(矩形?)并转换为 MovieClip(或者如果全部编码,则 addchild
形状为新的 MovieClip)。假设您将其命名为 mc_testBtn.
2) 通过编码使该 MC 可点击 mc_testBtn.buttonMode = true;
3) 在 mc_testBtn
中添加你的 mcMuteToggle
(或通过代码:mc_testBtn.addChild(mcMuteToggle);
现在您可以尝试类似...
mc_testBtn.addEventListener (MouseEvent.CLICK, toggle_Mute );
function toggle_Mute (evt:MouseEvent) : void
{
if ( whatever condition )
{
mc_testBtn.mcMuteToggle.gotoAndStop(2); //go frame 2
}
else
{
mc_testBtn.mcMuteToggle.gotoAndStop(1); //go frame 1
}
}
我有一个恼人的问题,希望有人能帮助我解决。
我创建了一个静音按钮,并且在该按钮内有另一个动画片段。我想要它做的就是当我切换静音时,里面的动画片段将转到相应的帧。
但是,每次我尝试调用按钮内的动画片段时,都会出现此错误:
Access of possibly undefined property mcMuteToggle through a reference with static type flash.display:SimpleButton.
其中的动画片段的实例名称是 "mcMuteToggle"。
这可能是由于严格模式。您可以在 ActionScript 设置对话框中禁用它,使用不同的语法 myButton['mcMuteToggle']
访问它,或者为包含 属性 mcMuteToggle
.[= 的符号创建 class 13=]
您还可以检查以确保符号确实在舞台上并且该剪辑确实在按钮中:
if('myButton' in root) {
// ...
}
if('mcMuteToggle' in myButton) {
// ...
}
我想你只是覆盖了那些代码。你可以使用这样的东西:
var soundOpen:Boolean = true;
var mySound:Sound = new Sound(new URLRequest("Whatever your sound is"));
var mySc:SoundChannel = new SoundChannel();
var mySt:SoundTransform = new SoundTransform();
mySc = mySound.play();
mcMuteToggle.addEventListener(MouseEvent.CLICK, muteOpenSound);
function muteOpenSound(e:MouseEvent):void
{
if(soundOpen == true)
{
mcMuteToggle.gotoAndStop(2);
/*on frame 2 u need to hold ur soundClose buton so ppl can see :)*/
soundOpen = false;
mySt.volume = 0;
mySc.soundTransfrom = st;
}
else
{
mcMuteToggle.gotoAndStop(1);
soundOpen = true;
mySt.volume = 1;
mySc.soundTransfrom = st;
}
}
这每次都对我有用。希望你能用好它;)
为什么不制作像按钮一样的影片剪辑??因为我不认为实际的 button
(simpleButton) 类型可以处理子 MovieClip(特别是如果它们也有代码)。即使可能不这样做,我也可以预测 Button
会根据您在这些 MClip 中的代码来做它不应该做的事情。
尝试另一种按钮方法,仅用于测试...您没有显示任何可用的测试代码,所以我会做出假设...
1) 制作一个形状(矩形?)并转换为 MovieClip(或者如果全部编码,则 addchild
形状为新的 MovieClip)。假设您将其命名为 mc_testBtn.
2) 通过编码使该 MC 可点击 mc_testBtn.buttonMode = true;
3) 在 mc_testBtn
中添加你的 mcMuteToggle
(或通过代码:mc_testBtn.addChild(mcMuteToggle);
现在您可以尝试类似...
mc_testBtn.addEventListener (MouseEvent.CLICK, toggle_Mute );
function toggle_Mute (evt:MouseEvent) : void
{
if ( whatever condition )
{
mc_testBtn.mcMuteToggle.gotoAndStop(2); //go frame 2
}
else
{
mc_testBtn.mcMuteToggle.gotoAndStop(1); //go frame 1
}
}