Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.07.2014, 14:53
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 1  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
По умолчанию камера слежения за персонажем

Сделал по примеру "анта карлова" на его сайте слежение за камерой, ну полученный результат не удовлетворяет.
Main.as
Код AS3:
stage.addEventListener(Event.ENTER_FRAME, spaceHeroFrame);
private function spaceHeroFrame(e:Event):void {
        if (move_Right) {
            if (HERO.x < 700)
                HERO.x += heroSpeed;
        }
 
        if (move_Left) {
            if (HERO.x > 1)
                HERO.x -= heroSpeed;
        }
        updMapPos(); // Скролл карты
}
 
private function updMapPos():void {
        if (HERO.x < Math.abs(mapLevel.x)+100) {//border
            mapLevel.hScroll(3); // Вправо
        }  else if (HERO.x > Math.abs(mapLevel.x) + 730-100) {//GameMap.SCR_WIDTH - _border
            mapLevel.hScroll(-3); // Влево
        }
    }
map.as
Код AS3:
private function enterFrameHandler(e:Event):void {
        /* Прибавляем скорость к положению карты */
        this.x += _speedX;
        this.y += _speedY;
 
        /* Горизонтальная прокрутка */
        if (this.x > 0) // Выезд за левый край
        {
            x = 0;
            _speedX = 0;
        }
        else if (this.x < - 1200 + 730) // Выезд за правый край
        {
            this.x = -1200 + 730;
            _speedX = 0;
        }
 
        /* Применяем торможение к скорости */
        _speedX *= .9;
        _speedY *= .9;
    }
 
    public function hScroll(val:Number):void {
        _speedX = val;
    }
код как бы и рабочий, ну в тоже время работа его очень непонятна:
- до конца длины карты не хочет прокручивать
- влево скролл срабатывает на середине экране
- когда идет скролл идет не пропорциональная скорость героя которая должна быть без скролла

может у кого были такие проблемы как решали ?

З.Ы. проблема в методе updMapPos() в Main.as он срабатывает не так как должно на границах....

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.