Actionscript 3 在AS3游戏中使用按钮更改光标
当按下按钮时,我试图使我的游戏改变光标。但是,按下其中一个按钮后,我无法再次更改它(似乎光标挡住了我的去路)。我认为设置Actionscript 3 在AS3游戏中使用按钮更改光标,actionscript-3,flash,Actionscript 3,Flash,当按下按钮时,我试图使我的游戏改变光标。但是,按下其中一个按钮后,我无法再次更改它(似乎光标挡住了我的去路)。我认为设置mouseCursor.mouseEnabled=false; 我会修好的,但看起来好像没修好。 这是我的密码,有人能告诉我我做错了什么吗 package { import flash.display.MovieClip; import flash.events.*; import flash.geom.*; import flash.text
mouseCursor.mouseEnabled=false;
我会修好的,但看起来好像没修好。
这是我的密码,有人能告诉我我做错了什么吗
package
{
import flash.display.MovieClip;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
import Game.*;
public class GameController extends MovieClip
{
private var mouseCursor:MovieClip;
public function GameController()
{
}
private function followMouse(evt:Event)
{
mouseCursor.x = mouseX;
mouseCursor.y = mouseY;
}
public function startGame()
{
needleOn = false;
mcGameUI.btnMixBlue.addEventListener(
MouseEvent.CLICK, mixBlue);
mcGameUI.btnMixRed.addEventListener(
MouseEvent.CLICK, mixRed);
mcGameUI.btnMixYellow.addEventListener(
MouseEvent.CLICK, mixYellow);
mcGameUI.btnNeedle.addEventListener(
MouseEvent.CLICK, activateNeedle);
mcGameUI.mouseEnabled = false;
}
private function mixBlue(evt:MouseEvent)
{
if (mouseCursor != null)
{
removeChild(mouseCursor);
mouseCursor.removeEventListener(Event.ENTER_FRAME,followMouse);
mouseCursor = null;
}
mouseCursor = new BlueBubble(mouseX,mouseY);
mouseCursor.gotoAndPlay("idle");
mouseCursor.mouseEnabled = false;
mouseCursor.addEventListener(Event.ENTER_FRAME,followMouse);
addChild(mouseCursor);
}
private function mixRed(evt:MouseEvent)
{
if (mouseCursor != null)
{
removeChild(mouseCursor);
mouseCursor.removeEventListener(Event.ENTER_FRAME,followMouse);
mouseCursor = null;
}
mouseCursor = new RedBubble(mouseX,mouseY);
mouseCursor.gotoAndPlay("idle");
mouseCursor.mouseEnabled = false;
mouseCursor.addEventListener(Event.ENTER_FRAME,followMouse);
addChild(mouseCursor);
}
private function mixYellow(evt:MouseEvent)
{
if (mouseCursor != null)
{
removeChild(mouseCursor);
mouseCursor.removeEventListener(Event.ENTER_FRAME,followMouse);
mouseCursor = null;
}
mouseCursor = new YellowBubble(mouseX,mouseY);
mouseCursor.gotoAndPlay("idle");
mouseCursor.mouseEnabled = false;
mouseCursor.addEventListener(Event.ENTER_FRAME,followMouse);
addChild(mouseCursor);
}
private function activateNeedle(evt:MouseEvent)
{
if (mouseCursor != null)
{
removeChild(mouseCursor);
mouseCursor = null;
mouseCursor.removeEventListener(Event.ENTER_FRAME,followMouse);
}
mouseCursor = new Needle();
mouseCursor.mouseEnabled = false;
addChild(mouseCursor);
mouseCursor.addEventListener(Event.ENTER_FRAME,followMouse);
}
}
}
您应该设置:
mouseCursor.mouseEnabled = false;
mouseCursor.mouseChildren = false;
mouseEnabled仅关闭容器mouseCursor
,但在此剪辑中,您仍然可以拥有mouseEnabled元素,因此mouseChildren
也应关闭
mouseChildren是在DisplayObjectContainer中定义的,这意味着由形状或位图组成的游标将不具有此属性,因此您需要首先测试它是否存在
if(mouseCursor is DisplayObjectContainer){
{
mouseCursor.mouseChildren = false;
}
这是因为光标剪辑是鼠标启用的,这意味着它捕获任何鼠标点击,我认为鼠标启用是不够的。你能展示你的mouseCursor相关代码吗(例如,mouseCursor的类)?下面是这些类的代码,它们基本上是一样的,没有任何说明:)set
mouseCursor.mouseChildren=false代码>并测试它。谢谢,这部分修复了问题,但现在当我从前三个游标之一转到第四个游标时,Needle()
它崩溃了。。。编辑:Needle()类是一个默认类(由构造函数创建的类)ten add crashlog,这样我们就可以看到它被破坏的位置:)可能您的光标不是一个容器,因此它上不存在鼠标儿童。TypeError:Error#1009:无法访问null对象引用的属性或方法。在GameController/activateNeedle()
附加信息:当我注释掉这部分时,`mouseCursor.removeEventListener(Event.ENTER_FRAME,followMouse);`在activatenedle()上,它停止崩溃。。。不知道为什么,看看你在做什么,你将mouseCursor设置为null,然后尝试访问它。