如果有人可以扩展当前的答案,那就太棒了,谢谢。
完整错误
Line 22 1119: Access of possibly undefined property CharacterX through a reference with static type flash.display:DisplayObject.
我试图为对象鲨鱼设置一个已在对象角色中定义的变量 第一次在flash中使用setter,所以我可能不会这样做。
代码我用来设置变量我试图注释掉我认为与此问题无关的内容,实际上没有在实际代码中注释掉。
var character:Character;
//var bullet:Bullet=null;
//var bullets:Array = new Array();
//var enemies:Array = new Array();
//character=new Character(bullets);
addChild(character);
var shark:Shark=new Shark();
addChild(shark);
//var enemy:Enemy=null;
////var i:int;
//for (i=0; i<10; i++) {
//enemy = new Enemy(Math.random()*stage.stageWidth, Math.random()*stage.stageHeight);
//addChild(enemy);
// enemies.push(enemy);
//}
//stage.addEventListener(Event.ENTER_FRAME, colTest);
//function colTest(e:Event ):void {
// if(character.hitTestObject(turtle)){
// character.gotoAndStop("Turtle");
// }
//}
shark.setT(character.x, character.y)
我尝试使用上述函数定义变量的类。
package
{
import flash.display.*;
import flash.events.*;
public class Shark extends MovieClip
{
var CharacterX:Number = 0;
var CharacterY:Number = 0;
public function Shark()
{
this.x = 300;
this.y = 200;
addEventListener(Event.ENTER_FRAME,playGame);
}
public function setT(characterx:Number,charactery:Number){
CharacterX = characterx - this.x;
CharacterY = charactery - this.y;
}
function playGame(event:Event):void
{
var ease:int = 20;
var speed:int = 10;
var targetX:int = root.CharacterX - this.x;
var targetY:int = root.CharacterY - this.y;
var rotation = Math.atan2(targetY,targetX) * 180 / Math.PI;
在这里删除代码,没有想要进行代码转储可以获得任何可能相关的问题。
如果它可能有帮助,这是所有代码的pastebin,
字符class
答案 0 :(得分:1)
首先我要说的是我无法在这里发现确切的问题,但我有一些想法。您的错误1999表示某种类型的显示对象正在尝试更改您的变量。当您使用parent.myMethod()时会发生这种情况,因为父类型被键入为显示对象。你可以通过类似于(parent作为MovieClip).myMethod
的类型转换来解决这个问题在你的情况下,我没有看到这个问题的确切来源。但您可以尝试在setT函数中使用this.characterX