2014-02-06 2 views
0

Я так много работал над приложением, которое отлично отображается на моей галактической ноте 3. Однако оно не отображается прямо на iPhone, а также на одном другом Droid, на котором я тестировал. Моя проблема связана с addChild() и затем изменяет ее размер, чтобы соответствовать экрану. По какой-то причине, когда я добавляю Background (addBG(); размер экрана работает, но если я загружаю addChild в BG, это отлично работает на моей заметке 3, но не на iPhone или другом устройстве Android.as3 проблема с выпуском и размером экрана и размера экрана на устройствах

Моя проблема с screenX, screenY var, которые я создал, они кажутся разными для устройств. Или это «проблема с порядком вывода», я не уверен. Было бы очень полезно помочь устранить эту проблему, чтобы она выглядела отлично на каждом телефоне. Я прочитал несколько статей по этому вопросу, но они сбивают с толку. Я думаю, что мой код близок, я надеюсь, и, возможно, он просто нуждается в настройке.

Вот снимок экрана на IPhone. белый не подходит для всего экрана. enter image description here

и Вот снимок из моей Droid Примечание 3. enter image description here

Заявленный Варс в упаковке:

Это не мой полный код, конечно, но только то, что я считаю уместным.

public var screenX:int; 
public var screenY:int; 


    public function Main() 
    { 
     if (stage) 
     { 

      setStage(); 
      addBG();  
     } 
    } 

    public function setStage() 
    { 
     stage.scaleMode = StageScaleMode.NO_SCALE; 
     stage.align = StageAlign.TOP_LEFT; 

     if (flash.system.Capabilities.screenResolutionX > stage.stageWidth) 
     { 
      screenX = stage.stageWidth; 
      screenY = stage.stageHeight; 
     } 
     else 
     { 
      screenX = flash.system.Capabilities.screenResolutionX; 
      screenY = flash.system.Capabilities.screenResolutionY; 
     } 
    } 

Это работает: addBG();

  public function addBG() 
    { 
     theBG = new BG(); 
     addChild(theBG); 
     theBG.width = screenX; 
     theBG.height = screenY; 
    } 

Это не: addAbout();

public function addAbout() 
     { 

      About = new viewAbout(); 
      About.width = screenX; 
      About.height = screenY; 
      theBG.addChild(About); 
      TweenMax.fromTo(About,1, {alpha:0}, {alpha:1, ease:Expo.easeOut} ); 

     } 

ОБНОВЛЕНИЕ: И еще одна более сложная нагрузка также вызывается с помощью кнопки и имеет ту же проблему. Надеюсь, вы видите логику того, что я пытаюсь сделать. Сначала установите BG на устройство, затем загрузите и измените размер содержимого, чтобы оно пропорционально соответствовало загружаемому BG. Причина в том, что BG будет искажен в разных пропорциях, и это нормально, но контент не может. Итак, вот пример, который загружает контент в BG, а затем содержимое в этот контейнер.

public function addRosaryApp() 
     { 
      Rosary = new viewRosaryApp(); 
      Rosary.width = screenX; 
      Rosary.height = screenY; 
      theBG.addChild(Rosary); 
      TweenMax.fromTo(Rosary,1, {alpha:0}, {alpha:1, ease:Expo.easeOut} ); 

      contentRosary = new contentRosaryApp(); 
      theBG.addChild(contentRosary); 
      contentRosary.width = screenX; 
      contentRosary.scaleY = contentRosary.scaleX; 
      contentRosary.x = screenX/2 - contentRosary.width/2; 
      contentRosary.y = menuBanner.height;  
     } 
+0

Получаете ли вы правильные значения для iphone, если вы отслеживаете свой экран X/screenY? – Fygo

+0

Да, его как 600 на 900 или что-то я забыл. Его iphone 4s. Он работает для BG и подходит для экранирования. Так что, может быть, это проблема с загрузкой, о которой я думаю, или iPhone не всегда видит значения screenX и ScreenY. –

+0

Вам следует использовать stage.fullscreenWidth, fullscreenHeight. Разве это имеет значение? – Fygo

ответ

1

Вы пробовали добавить ребенка на сцену первым, а затем установить размер? Это единственное различие я вижу между addBG и addAbout

 About = new viewAbout(); 
     theBG.addChild(About); // do this first 
     About.width = screenX; // then set width 
     About.height = screenY; // and height 
+0

Я думаю, что вы на что-то. Я заметил, что он масштабируется, потому что содержимое масштабируется. Поэтому, если его сжатие, новый добавленный контент также будет сжат. Чтобы исправить это, я думаю, что могу просто сделать addChild (menuBanner), сверху, а не добавлять содержимое внутри BG, и это то, что мне действительно нужно. Мой вопрос: если я это сделаю, я добавлю новый экземпляр, или просто буду перемещать его вверх, это то, что я хочу? –

+1

iF это одна и та же переменная, она «переместит» ее ... значит, она «повторит» ее. Однако, если она все еще привязана к другому родителю, она выдает исключение, поэтому вы должен будет справиться с этим безопасно –

+0

ОК, который должен работать тогда. Однако, если мне это нужно, я не знаю, как справиться с этим безопасно. –

0

Я думаю, ваша проблема, возможно, придется делать с любым из нескольких вещей. Мои данные до сих пор от моих собственных устройств (Ipad Air, iphone 4S, LG G2 и Acer Iconia A500) состоят в том, что единственный размер устройства, который сообщается правильно во все времена, это stage.fullScreenWidth и stage.fullScreenHeight

первых, Android сообщает Capabilities.screenResolutionX как длинная сторона вашего Android устройства. Устройства IOS, однако, сообщают SHORT стороне вашего устройства о Capabilities.screenResolutionX.

2nd, stage.stageWidth и stage.stageHeight, похоже, сообщают о неправильном размере как на Android, так и на IOS. И в самом деле, если вы проверить эти перед и после установки Stage.scaleMode и стадии.выровняйте, тогда значения будут полностью отличаться (хотя Android покажет его почти правильно).

Мое предложение состоит в том, что вы устанавливаете базовый размер (ширину и высоту) для своего приложения, а затем сравниваете его с фактическим stage.fullScreenWidth и stage.fullScreenHeight, сообщаемым устройством. Таким образом, вы можете получить некоторые красивые масштабирования для масштабирования ваших отображаемых объектов. Это то, что я сейчас нахожу в своих приложениях, и он отлично масштабируется :-)

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