1046: Тип не найден, смысла нет! - PullRequest
0 голосов
/ 22 октября 2010

У меня есть несколько пользовательских классов. Назовем их «Персонаж», который предполагается импортировать и использовать «Голова». Затем «Голова» импортирует и использует «Шляпу». Это прекрасно работает ...

package character
{
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.display.Stage; 
 import flash.display.Sprite;
 import flash.events.Event;
 import character.Head;
 import character.Hat;

 public class Character extends MovieClip 
 {
  // the objects
  public var _head:Head;
            // IF I UNCOMMENT THIS, I GET THIS 1046 ERROR 
  // public var asdfasfd:Hat;

  public function Character():void
  {
   trace("NEW CHARACTER");

   _head=new Head(stageRef, head_text);
   //_shirt=new Shirt(stageRef, shirt);      
  }

 }

}

и затем голова:

package character
{
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.display.Stage; 
 import character.Hat;

 // the character's head 
 public class Head extends MovieClip 
 {  
  public var _hat:Hat;  

  function Head(head_type:String=null):void
  {   
   trace ("NEW HEAD");

   this._hat = new Hat();   
  }
 }

}

И, наконец, класс шляпы:

package character 
{
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.display.Stage;
 import character.*;

 // the character's head 
 public class Hat extends MovieClip 
 {      
  private var stageRef:Stage;

  function Hat(stageRef:Stage=null, type:String=null):void
  {
   trace ("NEW HAT");
  } 

 }

}

Это работает без помех. Просто как пирог ... Но если я попытаюсь создать новый экземпляр "Hat" или даже определить переменную Hat в "Character", это даст мне ошибку времени компиляции: 1046: Тип не найден или не является константой времени компиляции: Hat.

Если я пытаюсь определить класс «Hat» и создать новый экземпляр «Hat» в моем основном скрипте, или в «Hat», это работает как чудо ... Если я пытаюсь сделать это в моем «Персонаже» это дает мне эту забытую богом ошибку. Я проверил мой импорт, они все одинаковые! Почему в мире это делает ?! Я буквально потратил впустую целый день на это !!!!!

РЕДАКТИРОВАТЬ / ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: У меня буквально 5 почти одинаковых классов, таких как рубашка, брюки, голова, шляпа, рука ... и некоторые из них работают, другие нет. Я скопировал и вставил один из полностью универсальных классов, который работает над тем, который не работает и до сих пор ничего. Все они отлично связаны и экспортированы для ActionScript ... все идентично, за исключением некоторых работ, а другие нет. Но те, которые этого не делают, работают, если я включаю их в вызываемые классы или где-то еще в этом отношении ... просто не в тот класс, который мне нужен. Я был на этом то же самое в течение 24 часов. Мне нужен отпуск ....

Ответы [ 3 ]

0 голосов
/ 22 октября 2010

Это определенно странная ошибка, поскольку она не относится к вашим классам. В ошибке упоминается KeyboardEvent, и в вашем коде нет никаких признаков этого и нет явных признаков класса, который потребовал бы KeyboardEvent.

Просто для тестирования, вы можете изменить эту строку:

import flash.events.Event;

К этому:

import flash.events.*;

Конечно, это не решает проблему, но если ошибка исчезнет, ​​возможно, вам придется отслеживать это KeyboardEvent в своем коде.

0 голосов
/ 22 октября 2010

Конструкторы не должны иметь тип возвращаемого значения. Экземпляр возвращается путем вызова конструктора. Так что вы должны просто оставить это. Иногда это может вызвать проблемы.

Кроме того, вам не нужно импортировать классы, которые находятся в том же пакете, что и класс, на который вы ссылаетесь.

Я попытался скопировать и вставить код, и он дает мне 3 ошибки:

Character.as(22): col: 21 Error: Access of undefined property stageRef.

    _head=new Head(stageRef, head_text);
                   ^

Character.as(22): col: 31 Error: Incorrect number of arguments.  Expected no more than 1.

    _head=new Head(stageRef, head_text);
                             ^

Character.as(22): col: 31 Error: Access of undefined property head_text.

    _head=new Head(stageRef, head_text);
                             ^

Если я удаляю stageRef и head_text, он компилируется и работает нормально.

Вы пытались удалить файлы .swf и перекомпилировать?

0 голосов
/ 22 октября 2010

Я не уверен, что это будет иметь смысл, но попробуйте переименовать ваш пакет (afaik имена пакетов не чувствительны к регистру, поэтому он соответствует имени класса символов)

...