Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы с методами MovieClip при изменении его координат! (http://www.flasher.ru/forum/showthread.php?t=142140)

mott 13.07.2010 20:37

Проблемы с методами 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 mott:
Почитайте внимательно о том, какие координаты должны передаваться в Point, служащий параметром для указанных вами методов. Методы работать не перестают. Просто они работают не так, как вы хотите, потому что где-то у вас ошибка. Не синтаксическая. Логика неверно работает.

mott 13.07.2010 20:49

А он ( globalToLocal ) разве принимает координаты не из системы исчисления _this клипа ?

Хемуль 13.07.2010 20:53

Цитата:

Сообщение от mott (Сообщение 922063)
А он ( 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 аналогично.

mott 13.07.2010 20:56

Ок.
Огромное спасибо!

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


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

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