Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 闪存CS6错误#1009-按钮消失_Actionscript 3_Flash_Flash Cs6 - Fatal编程技术网

Actionscript 3 闪存CS6错误#1009-按钮消失

Actionscript 3 闪存CS6错误#1009-按钮消失,actionscript-3,flash,flash-cs6,Actionscript 3,Flash,Flash Cs6,我第一次开始使用FlashCS6来尝试为UDK制作ScaleFormUI。我将遵循以下简单教程:。我已经一丝不苟了,但似乎无法使它发挥作用。我甚至在一个新项目中再次尝试过,但最终还是出现了同样的错误。我已经对每个名称和实例进行了三次检查,但都不起作用。下面是文件中两个帧的简单代码: import flash.events.MouseEvent; import flash.system.fscommand; import flash.display.MovieClip; subMenu_btn.

我第一次开始使用FlashCS6来尝试为UDK制作ScaleFormUI。我将遵循以下简单教程:。我已经一丝不苟了,但似乎无法使它发挥作用。我甚至在一个新项目中再次尝试过,但最终还是出现了同样的错误。我已经对每个名称和实例进行了三次检查,但都不起作用。下面是文件中两个帧的简单代码:

import flash.events.MouseEvent;
import flash.system.fscommand;
import flash.display.MovieClip;

subMenu_btn.addEventListener(MouseEvent.CLICK, subMenu);
exit_btn.addEventListener(MouseEvent.CLICK, exitGame);

var cursor:cursor_mc = new cursor_mc();
addChild(cursor);
     cursor.x = mouseX;
     cursor.y = mouseY;
cursor.startDrag();

stop();

function subMenu(event:MouseEvent):void
{
     gotoAndStop('Sub Menu');
}
function exitGame(event:MouseEvent):void
{
     fscommand('ExitGame');
}

我使用了调试器,代码在

exit_btn.addEventListener(MouseEvent.CLICK, exitGame);
有什么想法吗?直到我使用“后退”按钮返回到第一帧,当“退出”按钮消失时,我得到了那个错误,整个过程才开始。然而,“子菜单”按钮保持不变,菜单仍可操作

这是使用调试器时出现的错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Menu_fla::MainTimeline/frame1()[Menu_fla.MainTimeline::frame1:6]
at flash.display::MovieClip/gotoAndStop()
at Menu_fla::MainTimeline/backBtn()[Menu_fla.MainTimeline::frame2:10]

好吧,我在上面的评论中说的可能是错的,解决办法是:

第一帧的AS3:

import flash.events.MouseEvent;
import flash.system.fscommand;
import flash.display.MovieClip;

var cursor:cursor_mc = new cursor_mc();

subMenu_btn.addEventListener(MouseEvent.CLICK, subMenu);
exit_btn.addEventListener(MouseEvent.CLICK, exitGame);

addChild(cursor);
     cursor.x = mouseX;
     cursor.y = mouseY;
cursor.startDrag();
Mouse.hide();

stop();

function subMenu(event:MouseEvent):void
{
    subMenu_btn.removeEventListener(MouseEvent.CLICK, subMenu);
    exit_btn.removeEventListener(MouseEvent.CLICK, exitGame);
    removeChild(cursor);
     gotoAndStop('Sub Menu');
}
function exitGame(event:MouseEvent):void
{
     fscommand('ExitGame');
}
play_btn.addEventListener(MouseEvent.CLICK, playGame);
back_btn.addEventListener(MouseEvent.CLICK, backBtn);

cursor = new cursor_mc();
addChild(cursor);
     cursor.x = mouseX;
     cursor.y = mouseY;
cursor.startDrag();
Mouse.hide();

function playGame(event:MouseEvent):void
{
     fscommand('PlayMap');
}
function backBtn(event:MouseEvent):void
{
    removeChild(cursor);
     gotoAndStop('Main Menu');
}
第二帧的AS3:

import flash.events.MouseEvent;
import flash.system.fscommand;
import flash.display.MovieClip;

var cursor:cursor_mc = new cursor_mc();

subMenu_btn.addEventListener(MouseEvent.CLICK, subMenu);
exit_btn.addEventListener(MouseEvent.CLICK, exitGame);

addChild(cursor);
     cursor.x = mouseX;
     cursor.y = mouseY;
cursor.startDrag();
Mouse.hide();

stop();

function subMenu(event:MouseEvent):void
{
    subMenu_btn.removeEventListener(MouseEvent.CLICK, subMenu);
    exit_btn.removeEventListener(MouseEvent.CLICK, exitGame);
    removeChild(cursor);
     gotoAndStop('Sub Menu');
}
function exitGame(event:MouseEvent):void
{
     fscommand('ExitGame');
}
play_btn.addEventListener(MouseEvent.CLICK, playGame);
back_btn.addEventListener(MouseEvent.CLICK, backBtn);

cursor = new cursor_mc();
addChild(cursor);
     cursor.x = mouseX;
     cursor.y = mouseY;
cursor.startDrag();
Mouse.hide();

function playGame(event:MouseEvent):void
{
     fscommand('PlayMap');
}
function backBtn(event:MouseEvent):void
{
    removeChild(cursor);
     gotoAndStop('Main Menu');
}
每次点击第1帧时都会实例化游标,我相信这会造成名称空间问题。解决方案是将光标从舞台上移除,然后为每一帧重新添加光标。可能有一个更优雅的解决方案,但由于我从未将多帧与as一起使用(出于这个原因),这是我所能做的最好的解决方案。我还隐藏了鼠标光标以使光标更清晰

如果你还有其他问题,请告诉我。
快乐编码

另一个解决方案是创建一个新层,并将光标代码仅放在该层上。该层将有一个关键帧,并延伸到覆盖整个时间轴,因此它始终处于活动状态


或者,创建存在于第1帧上的菜单电影剪辑。在电影剪辑中,菜单的每个部分都有不同的画面(选项等)。光标将与菜单“电影剪辑”位于同一级别。因此它始终存在并且只初始化一次。

在“主菜单”框架上是否有“退出”按钮?你让Flash去听一些不存在的东西。右边有一个侧边栏,里面全是和你有同样问题的人,你可能想看看。我已经浏览了所有这些帖子,但没有找到答案。这是一个你可以看到的项目:我认为正在发生的事情是每次你改变一帧时,Flash都会
NULL
ing出所有的电影片段;如果调试并查看此->退出\u btn(其值为空),您可以看到这一点。我会把我的建议贴在答案栏。非常感谢!有趣的是,我在UDK中尝试了swf,效果很好,可以说是最不奇怪的。回答得很好。很高兴能帮上忙,@Taslem!如果我的解决方案确实解决了问题,请将其标记为答案。谢谢你,编码快乐!