2012-03-09 48 views
0

我正在创建一个“好”,“坏”数组显示在屏幕上,我可以稍后使用简单的if语句做一些事情,如果玩家与“好” “坏”的对象。 我不能让对象在屏幕上随机生成以下代码。as3错误加载“好”“坏”数组

//创建并设置好/坏随机字对象

public function newObject(e:Event) 
    { 
     var goodObjects:Array = ["WordObject1"]; 
     var badObjects:Array = ["WordObject2"]; 
     if (Math.random() < .5) 
     { 
      var r:int = Math.floor(Math.random()*goodObjects.length); 
      var classRef:Class = getDefinitionByName(goodObjects[r]) as Class; 
      var newObject:MovieClip = new classRef(); 
      newObject.typestr = "good"; 
     } else 
     { 
      r = Math.floor(Math.random()*badObjects.length); 
      classRef = getDefinitionByName(badObjects[r]) as Class; 
      newObject = new classRef(); 
      newObject.typestr = "bad"; 
     } 
     newObject.x = Math.random(); 
     newObject.y = Math.random(); 
     addChild(newObject); 
     objects.push(newObject); 
     placeWords(); 
    } 
    // create random Word objects 
    public function placeWords() { 
     objects = new Array(); 
     for(var i:int=0;i<numWordObjects;i++) { 

      // loop forever 
      while (true) { 

       // random location 
       var x:Number = Math.floor(Math.random()*mapRect.width)+mapRect.x; 
       var y:Number = Math.floor(Math.random()*mapRect.height)+mapRect.y; 

       // check all blocks to see if it is over any 
       var isOnBlock:Boolean = false; 
       for(var j:int=0;j<blocks.length;j++) { 
        if (blocks[j].hitTestPoint(x+gamesprite.x,y+gamesprite.y)) { 
         isOnBlock = true; 
         break; 
        } 
       } 

       // not over any, so use location 
       if (!isOnBlock) { 
        newObject.x = x; 
        newObject.y = y; 
        newObject.gotoAndStop(Math.floor(Math.random()*1)+1); 
        gamesprite.addChild(newObject); 
        objects.splice(newObject); 
        break; 
       } 
      } 
     } 
    } 

我得到以下错误:

1119:通过静态类型函数的引用可能未定义的属性x的访问。
1119:通过静态类型函数的引用访问可能未定义的属性y。 1067:将函数类型的值隐式强制为无关类型flash.display:DisplayObject。

回答

0

尝试将var x和var y重命名为其他名称。在任何扩展为显示对象(Sprite/MovieClip/Shape)的类中,都是public properties