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

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

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

Регистрация: Mar 2010
Сообщений: 8
Attention Проблемы с методами MovieClip при изменении его координат!

Привет всем.
Постоянно при создании игр возникают проблемы с клипом, который приходится двигать.
Описание проблемы
Игра - вид сверху. Есть главный клип в который добавляются все игровые объекты. Игровое поле ( этот главный клип ) больше размера приложения, следовательно при движении персонажа он остается на месте а вокруг него движется игровое поле:

Код AS3:
// _this : MovieClip - это гланый клип
// player : MovieClip - персонаж
if ( player.x > SCREEN_WIDTH / 2 && player.x < SCREEN_WIDTH * 2 - SCREEN_WIDTH / 2 ) {
   _this.x = -player.x + SCREEN_WIDTH / 2;
}
if ( player.y > SCREEN_HEIGHT / 2 && player.y < SCREEN_HEIGHT * 2 - SCREEN_HEIGHT / 2 ) {
   _this.y = -player.y + SCREEN_HEIGHT / 2;
}
После того как главный клип сдвигается перестают работать:
hitTestPoint
localToGlobal
globalToLocal

Пример:
Код AS3:
var temp : MovieClip = ...
// задал ему размеры
_this.addChild ( temp );
// точка находится внутри temp
temp.globalToLocal( new Point ( 730.78, 140.54 ) );
Результат

// _this еще не двигался ( правильное значение )
(x=-4.75, y=2.25)
// _this после сдвигов
(x=85.85, y=2.25)
(x=613.3, y=99.5)
(x=458.55, y=327)

Есть ли как-нибудь способ избавится от таких проблем?
Заранее благодарю за помощь.

Старый 13.07.2010, 20:42
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 mott:
Почитайте внимательно о том, какие координаты должны передаваться в Point, служащий параметром для указанных вами методов. Методы работать не перестают. Просто они работают не так, как вы хотите, потому что где-то у вас ошибка. Не синтаксическая. Логика неверно работает.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 13.07.2010, 20:49
mott вне форума Посмотреть профиль Отправить личное сообщение для mott Найти все сообщения от mott
  № 3  
Ответить с цитированием
mott

Регистрация: Mar 2010
Сообщений: 8
А он ( globalToLocal ) разве принимает координаты не из системы исчисления _this клипа ?

Старый 13.07.2010, 20:53
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 4  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Цитата:
Сообщение от mott Посмотреть сообщение
А он ( globalToLocal ) разве принимает координаты не из системы исчисления _this клипа ?
Из документации:
Цитата:
globalToLocal () method

Converts the point object from the Stage (global) coordinates to the display object's (local) coordinates.

To use this method, first create an instance of the Point class. The x and y values that you assign represent global coordinates because they relate to the origin (0,0) of the main display area. Then pass the Point instance as the parameter to the globalToLocal() method. The method returns a new Point object with x and y values that relate to the origin of the display object instead of the origin of the Stage.
С localToGlobal аналогично.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 13.07.2010, 20:56
mott вне форума Посмотреть профиль Отправить личное сообщение для mott Найти все сообщения от mott
  № 5  
Ответить с цитированием
mott

Регистрация: Mar 2010
Сообщений: 8
Ок.
Огромное спасибо!

Просто в русской документации нет слова stage, и я интерпретировал глобальнный как родительский ( parent ).

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

Теги
hitTestPoint , localToGlobal , movieclip , проблема
Опции темы
Опции просмотра

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

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


 


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


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