2016-09-14 6 views
0

Я разрабатываю игру с AIR для рамки android и Starling. Я использую Flash CC как IDE. Когда я тестирую i внутри flash, он отлично работает, но когда я публикую его на Android, он не работает должным образом.Приложение AIR работает внутри IDE, но не на устройстве

У меня есть экранный диспетчер, который скрывает и показывает меню, выбор уровня и экраны игры. Для этого у меня есть специальный класс событий. Функция, приведенная ниже, находится внутри класса Диспетчера экранов. Он работает для каждого значения назначения, но не для TO_GAME.

private function onNavigate(e: NavEvent) 
    { 
     if (e.destination == Destination.TO_HOME) 
     { 
      menuScreen.wake(); 
     } 
     else if (e.destination == Destination.TO_LEVELS) 
     { 
      levelScreen.wake(); 
     } 
     else if (e.destination == Destination.TO_GAME) 
     { 
      gameScreen.wake(); 
     } 
     else if (e.destination == Destination.TO_HELP) 
     { 
      helpScreen.wake(); 
     } 
     else if (e.destination == Destination.TO_ABOUT) 
     { 
      aboutScreen.wake(); 
     } 
    } 

Событие, инициированное пользователем, вызывается, когда пользователь нажимает кнопку уровня. См. Остальную часть

var btn:Button = e.target as Button; 
     if (btn == backBtn) 
     { 
      this.dispatchEvent(new NavEvent(NavEvent.NAVIGATE , Destination.TO_HOME)); 
      this.sleep(); 
     } 
     else 
     { 
      //just testing if I can get the level number from the position of the level button 
      trace(this.getLevelNumber(btn.x,btn.y)); 
      this.dispatchEvent(new NavEvent(NavEvent.NAVIGATE , Destination.TO_GAME)); 
      this.sleep(); 
     } 

Я уволил это событие с разных кнопок, но пока не повезло. Он работает внутри IDE, но внутри устройства ничего не происходит. Все остальные события работают. Событие первое условие в вышеуказанной функции работает нормально.

ответ

1

При публикации на платформе AIR для Android вы должны иметь в виду, что имена файлов чувствительны к регистру.

Например, у меня был файл с именем «LevelData.json». Обратите внимание на капитал D.

я загружал этот файл в скворечник активов-менеджер, как ниже

assets.enqueue(dir.resolvePath("Data/Levels/leveldata.json")); 

Обратите внимание, что я использовал маленькую букву на «D». Поскольку у окон есть имена, нечувствительные к регистру, это не вызвало никаких проблем, но когда я запускал приложение на реальном устройстве Android. Это не работает. Поэтому я изменил исходное имя файла на "leveldata.json" ans voila! Теперь приложение работает нормально.

+0

Поздравляем вас с расчетом +1 для публикации ценного ответа на проблему, которая может преследовать других. –