2014-01-27 3 views
0

Я пытаюсь настроить полноэкранный режим и реализовать элементы текучести, однако неясно, если я должен включить событие отправки в переключатель для изменения размера экрана или это будет то, что будет обнаружено предыдущим eventListener, когда полноэкранный режим активирован переключатель?Делает ли экранный триггер событий в as3?

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

public function Main():void { 
    addEventListener(Event.ADDED_TO_STAGE, init); 

    stage.addEventListener(Event.RESIZE, resizeListener); 
    stage.addEventListener(FullScreenEvent.FULL_SCREEN_INTERACTIVE_ACCEPTED, fullScreenRedraw); 
} 

private function resizeListener (e:Event):void { 

    // - Do I put my resize control options here to cater for general resize or see below? 
myMovie.width = stage.stageWidth; // etc 
} 
private function fullScreen(e:MouseEvent):void { 
    try { 
    switch (stage.displayState) { 
     case StageDisplayState.FULL_SCREEN_INTERACTIVE: 
      /* If already in full screen mode, switch to normal mode. */ 
      stage.displayState = StageDisplayState.NORMAL; 

     break; 
     default: 
      stage.fullScreenSourceRect = null; 
      // If not in full screen mode, switch to full screen mode. 
      stage.dispatchEvent(new Event(Event.RESIZE)); 
      stage.displayState = StageDisplayState.NORMAL; 
      stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
     break; 
     } 
    } catch (err:SecurityError) { 
     // ignore 
    } 
} 
private function fullScreenRedraw(event:FullScreenEvent):void { 
    if (event.fullScreen) { 
     // FULLSCREEN TRUE 

     // - Or do I put my resize control options here to cater for the fullscreen as well? 
     myMovie.width = stage.stageWidth; // etc 

     var fScrField:TextField = new TextField(); 
     fScrField.y = 480; 
     fScrField.text = "Redraw : True"; 
     addChild(fScrField); 
    } else { 
     // NON FULLSCREEN 
     fScrField.text = "Redraw : False"; 
     addChild(fScrField); 
    } 
} 

* * Измененный обработчики, как указано на самана. Но противоречивая информация о том, что происходит где и почему?

private function activateHandler(event:Event):void { 
    trace("activateHandler: " + event); 
} 
private function fullScreenRedraw(event:FullScreenEvent):void { 
    if (event.fullScreen) { 
     // Add additional panels if set/sizes 
     var fScrField:TextField = new TextField(); 
     fScrField.y = 480; 
     fScrField.text = "Redraw : True"; 
     addChild(fScrField); 
    } else { 
     // Remove additional panels etc 
     fScrField.text = ""; 
     fScrField.text = "Redraw : False"; 
     addChild(fScrField); 
    } 
} 

Теперь я смог получить работу в всевозможным способами, используя код, приведенный выше с вариациями, но проведя дни онлайн прибегая к помощи там, кажется, нет efficiant или ясное объяснение, которое лучше всего.

Любая помощь в том, где это может быть лучше оптимизировано и сделано более эффективно, поскольку я как бы просто объединил его с тем, что я могу решить.

Заранее спасибо.

ответ

1

Думаю, вы слишком усложняете это. Попробуйте так:

// in your constructor: 
fullScreenBtn.addEventListener(MouseEvent.CLICK, toggleFullScreen); 
stage.addEventListener(FullScreenEvent.FULL_SCREEN, refreshStage); 
stage.addEventListener(Event.RESIZE, refreshStage); 
// then handle stage resize: 
private function refreshStage(event:Event = null):void 
{ 
    if (stage.displayState == StageDisplayState.NORMAL) { 
    // handle stage in normal mode 

    } else { 
    // handle stage in full screen mode 

    } 
} 
// handle stage state toggle: 
private function toggleFullScreen(event:Event = null):void 
{ 
    if (stage.displayState == StageDisplayState.NORMAL) 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
    else 
    stage.displayState = StageDisplayState.NORMAL; 
} 
+0

Вы вполне можете быть правы, я попробую. Существует так много толкований онлайн, что трудно понять, что эффективно, и что можно сделать ради этого. Метод, который я пытался, заключался в том, чтобы использовать интерактивную клавиатуру, как описано в одном методе, однако, похоже, он не слишком хорошо реагировал на действия после полноэкранного просмотра, поэтому я играл с ним. Что я получил, работал и делал это хорошо, но я просто не знал о всех вариантах, где вы могли бы также реализовать изменения, а затем легко потеряться, как и я. Я буду проверять его в ближайшее время, так как это, безусловно, выглядит легче понять! Благодарю. – esadude

+0

Пока я не развил свой сайт, я сохраню его в качестве опции, но я все еще не доволен вариантами изменения размера/интерактивного изменения размера и должен проверить это еще до того, как я совершу любой путь, что является личной проблемой. m глядя в проблему с изменением размера/полноэкранного режима. У вас явно более простое на практике и работает тоже, но это простое отсутствие правильного и неправильного во вспышке, которое я ненавижу, и особенно с помощью интерактивных опций, мало что на самом деле делает и как это помогает, я просто чувствую себя лучше реализация должна включать его (как-то - вопрос), но спасибо. – esadude

+0

Я использовал интерактивный полноэкранный режим в приложениях AIR (киоск), когда мне нужны текстовые поля. Проверьте это, возможно, вам не хватает некоторых параметров: http://help.adobe.com/en_US/as3/dev/WS58a13becbb904c7-28cf6d32136e60de784-8000.html – mika

Смежные вопросы