Привет, следующий код работает при прокрутке по левому или правому краю экрана в моей игре; однако при прокрутке в правом или нижнем краю экрана, когда достигнут край «карты», я могу видеть за краем карты, то есть я вижу пустое пространство, то есть цвет сцены. Если при прокрутке к краю левого или верхнего края карты я не могу видеть за краем карты.Экранная прокрутка не работает для правого и нижнего краев 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;
}
}
надежда, что имеет смысл, благодаря
привет, к сожалению, это не решило проблему, она по-прежнему создает ту же проблему. Код, связанный с горизонтальной прокруткой, был взят из книги. Я не уверен, почему он не работает должным образом для моей игры. Есть идеи? Есть ли лучший способ добиться эффекта прокрутки? спасибо – Larry
это код из книги '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
Хм, теперь я вижу. Код кажется правильным (забудьте мои изменения). Это 'if (container.x <- (container.width-stage.stageWidth)) container.x = - (container.width-stage.stageWidth);' строка препятствует перемещению уровня слишком слева, поэтому вы не увидите никаких белых пространство справа. Вы уверены, что ваш уровень/этап не масштабируется? Вы пишете свое приложение для мобильного телефона? – user1875642