我正在制作游戏(点击和点按),我正试图让玩家在行走时发光。这很简单,但我不知道为什么我会失败。我一定错过了什么。
我已经有了代码,因为当我把它放在另一个可用的项目上时,我的可用项目会发光。所以我有一个Engine
课程,我试图在玩家走路时放置使项目发光的代码。还有DraggedItem
班。此类允许用户在舞台上拖动库存项目。
在我的DraggedItem
课程中,我有这个功能:
private function itemGlow(isGlowing:Boolean):void{
if (isGlowing){
var glow:GlowFilter = new GlowFilter();
glow.color = 0xFFFF00;
glow.alpha = .75;
glow.blurX = 10;
glow.blurY = 10;
glow.quality = BitmapFilterQuality.MEDIUM;
draggedItem.filters = [glow];
} else {
draggedItem.filters = null;
}
}
在我的Engine
课程中,我想在我的播放器走路时使用此功能。
我认为我可以放这样的东西:
back = new Background(stage, thisBack);
back.currentBack.ground.addEventListener(MouseEvent.MOUSE_DOWN, shineItems, false, 0, true);
private function shineItems(e:MouseEvent):void{
trace(shineItems);
var thisClip = usableItems
if (playerControl){
stage.dispatchEvent(new Event("playerMoving"));
draggedItem.itemGlow(true);
}
}
但不是这样。 我必须以错误的方式导入函数。
所以我尝试添加Engine
班级,然后按draggedItem.itemGlow;
更改itemGlow;
。
private function itemGlow(isGlowing:Boolean):void{
if (isGlowing){
var glow:GlowFilter = new GlowFilter();
var thisClip = usableItems
glow.color = 0xFFFF00;
glow.alpha = .75;
glow.blurX = 10;
glow.blurY = 10;
glow.quality = BitmapFilterQuality.MEDIUM;
thisClip.filters = [glow];
} else {
thisClip.filters = null;
}
}
但它也没有用。
有什么想法吗?
编辑
我把draggedItem.itemGlow(true);在shineItems函数中,我现在遇到了这个错误: TypeError:错误#1009:无法访问空对象引用的属性或方法。 在com.laserdragonuniversity.alpaca :: Engine / shineItems()[C:\ Users \ stephanberger4 \ Desktop \ 07 novembre \ Tactile \ com \ laserdragonuniversity \ alpaca \ Engine.as:321]
第321行是:draggedItem.itemGlow(true);
答案 0 :(得分:0)
如果它是你要发光的DraggedItem类的一个实例,你可以像这样设置一个DraggedItem实例的过滤器(来自类中):
filters = [glow];
或:
this.filters = [glow];
这假定DraggedItem扩展DisplayObject,以访问filters属性 另外,在shineItems函数中,当它是一个函数时,你将itemGlow称为属性;它应该是:
draggedItem.itemGlow(true);
或
draggedItem.itemGlow(false);