2013-08-03 3 views
0

Привет, следующий код работает при прокрутке по левому или правому краю экрана в моей игре; однако при прокрутке в правом или нижнем краю экрана, когда достигнут край «карты», я могу видеть за краем карты, то есть я вижу пустое пространство, то есть цвет сцены. Если при прокрутке к краю левого или верхнего края карты я не могу видеть за краем карты.Экранная прокрутка не работает для правого и нижнего краев AS3

public function scroll_screen():void { //scrolling left, right, up, down 

    var stagePositionX:Number = container.x+player.x; 
    var rightEdge:Number = stage.stageWidth-edgeDistance; 
    var leftEdge:Number = edgeDistance; 

    var stagePositionY:Number = container.y+player.y; 
    var bottomEdge:Number = stage.stageHeight-edgeDistance; 
    var topEdge:Number = edgeDistance; 

     //horizontal scrolling 
     if (stagePositionX > rightEdge) { 
      container.x -= (stagePositionX-rightEdge); 
      if (container.x < -(container.width-stage.stageWidth)) container.x = -(container.width-stage.stageWidth); 
     } 
     if (stagePositionX < leftEdge) { 
      container.x += (leftEdge-stagePositionX); 
      if (container.x > 0)container.x = 0; 

     } 

     //vertical scrolling 
     if (stagePositionY > bottomEdge) { 
      container.y -= (stagePositionY-bottomEdge); 
      if (container.y < -(container.height-stage.stageHeight)) container.y = -(container.height-stage.stageHeight); 
     } 
     if (stagePositionY < topEdge) { 
      container.y += (topEdge-stagePositionY); 
      if (container.y > 0) container.y = 0; 
     } 
    } 

надежда, что имеет смысл, благодаря

ответ

0

** обновлен * *

Ваша проблема заключается в том, что container.width изменяется, когда ваши формы улетают от первоначального прямоугольника.

Если вы создаете var initialContainerWidth и сохраните свою ширину контейнера там, пока не добавите в нее какие-либо фигуры, а затем используйте эту сохраненную переменную вместо container.width, она будет работать нормально. Или вы можете добавить свои летающие формы прямо на сцену, чтобы они не увеличивали размеры контейнера.

Вы можете просто скопировать 1386 вместо container.width, чтобы проверить его.

+0

привет, к сожалению, это не решило проблему, она по-прежнему создает ту же проблему. Код, связанный с горизонтальной прокруткой, был взят из книги. Я не уверен, почему он не работает должным образом для моей игры. Есть идеи? Есть ли лучший способ добиться эффекта прокрутки? спасибо – Larry

+0

это код из книги 'var stagePosition: Number = gamelevel.x + hero.mc.x; \t \t \t var rightEdge: Number = stage.stageWidth-edgeDistance; \t \t \t var leftEdge: Number = edgeDistance; \t \t \t, если (stagePosition> RightEdge) { \t \t \t \t gamelevel.x - = (stagePosition-RightEdge); \t \t \t \t если (gamelevel.x <- (gamelevel.width-stage.stageWidth)) gamelevel.x = - (gamelevel.width-stage.stageWidth); \t \t \t} \t \t \t, если (stagePosition 0) gamelevel.x = 0; \t \t \t} ' – Larry

+0

Хм, теперь я вижу. Код кажется правильным (забудьте мои изменения). Это 'if (container.x <- (container.width-stage.stageWidth)) container.x = - (container.width-stage.stageWidth);' строка препятствует перемещению уровня слишком слева, поэтому вы не увидите никаких белых пространство справа. Вы уверены, что ваш уровень/этап не масштабируется? Вы пишете свое приложение для мобильного телефона? – user1875642