2015-07-28 2 views
1

Так что я пытался сделать учебник AvoiderGame для своего YT, и я нашел сбой с программой. (Он говорил мне, что объект Timer принимает 0 параметров)AS3 Glitch (Timer Object)

Тогда я подумал, что, возможно, пропустил скобку или что-то где-то что вызвало ошибку, но теперь, кажется, как Flash Professional Glitch

ИНФОРМАЦИЮ :

файл: Enemy.as (связан с «врагом» мувиклип символ в файле main.fla)

package{ 
    import flash.display.MovieClip; 
    import flash.utils.Timer; 
    import flash.events.TimerEvent; 

    public class Enemy extends MovieClip{ 
     private var speeds:Array = new Array(); 
     private var counter:Timer = new Timer(1); <-- Line 8 
     private var speed:int = 0; 

     public function Enemy(xPos:int, yPos:int, speeds:Array){ 
      x = xPos; 
      y = yPos; 
      this.speeds = speeds; 
      initalize(); 

      counter.start(); 
      counter.addEventListener(TimerEvent.TIMER, update); 
     } 

     protected function initalize(){ 
      speed = speeds[0] + Math.round(Math.random()*(speeds[1] - speeds[0])); 
     } 

     protected function update(e:TimerEvent){ 
      y += speed; 
     } 

     public function setPos(xVal:int, yVal:int){ 
      x = xVal; 
      y = yVal; 
     } 

     public function movePos(xVal:int, yVal:int){ 
      x += xVal; 
      y += yVal; 
     } 
    } 
} 

(я заменил мое имя с «User», чтобы люди не будете знать мое настоящее имя)

Этот Кодекс дал мне следующие ошибки:

C: \ Users \ User \ Desktop \ флэш Материал \ Avoider Delux \ Enemy.as, линии 8, Колонка 35 1136: Неправильный номер аргументов. Ожидаемый 0.

C: \ Users \ User \ Desktop \ Flash Stuff \ Avoider DeluX \ Enemy.as, Строка 8, Столбец 35 1136: Неправильное количество аргументов. Ожидаемое 0.

(да, ошибки действительно появлялся в 2 раза)

+1

Вы назвали что-то «Таймер», возможно, это метод, возможно, объект, но он противоречит классу Timer. – BotMaster

ответ

1

Это заставляет меня думать, что вы можете еще один класс Timer сталкивающихся в пространстве имен. Попробуйте уточнить полное имя каждый раз:

private var counter:flash.utils.Timer = new flash.utils.Timer(1); 
+0

Спасибо, я обнаружил, что ошибка была в том, что у меня был символ с именем Timer, но когда я позже изменил его на TimeSlow, я забыл изменить имя класса, с которым оно связано и с TimeSlow. thx :) – Plas

0

Я думаю, что это проблема с параметром. Одна вещь, которую я заметил, - это таймер, принимающий 2 параметра. Первая - это задержка, которая находится в миллисекундах. Во-вторых один RepeatCount, что является дополнительным

Как говорит Docs

Задержка ниже, чем 20 миллисекунд, не рекомендуется.

Поэтому я бы рекомендовал использовать цифру более 20 миллисекунд или 1000 в течение одной секунды.

+0

Просто, чтобы вы знали, я попробовал 2 параметра, и у него все еще появилась ошибка. Кроме того, второй параметр по умолчанию равен 0, что в моем случае дало мне таймер, который повторялся бесконечно – Plas