![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
Здравствуйте
есть два класса: первый это герой, в нем создается MovieClip героя и размещается по центру второй класс это пули, там соответственнно создаются пули и привязываются к герою, т.е. стартовая точка, это координаты героя если в классе пуль вызвать trace(hero.x, hero.y) то выводит 0, 0 соответственно если в классе героя создать или методы get для X, Y или две переменные типа var X var Y и уже вызывать их в классе пуль, то координаты отдаются как положено по центру как быть? неужели в других классах при передаче объекта hero придется обращаться не к его реальным x, y которые по умолчанию есть, а к созданным переменным X, Y ? спасибо |
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
что-то не разобрался я
как было 0,0 так и осталось... |
|
|||||
|
Создайте отдельные слои (сверху вниз) для:
- нашего персонажа - пуль - противников Все это положите в один Sprite. Таким образом все перечисленные выше объекты будут иметь одну систему координат.
__________________
...вселенская грусть |
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
мне кажется проще тогда в самом классе например героя, задать myX, myY переменные и к ним обращаться? короче получается вроде?
или я не понял все удобство localToGlobal ? как-то длинно получается и неудобно? Добавлено через 48 секунд Цитата:
Добавлено через 1 минуту объекты создаются программно из символов... |
|
|||||
|
Цитата:
Что Вам мешает создать класс World, в котором будет 3 приватных переменных типа Sprite? А в эти спрайты уже добавляем наши пули и персонажей
__________________
...вселенская грусть |
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
2gloomyBrain поподробнее можно? :-) я новичок еще...
опять же, герой он один, но врагов и пуль будут сотни... |
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
2gloomyBrain поднимаю Вашу тему про отдельный спрайт в другом классе и единую систему координат
Вы не могли бы написать хотя бы небольшой пример, или на словах более подробно описать, как именно пользоваться Вашим советом, а именно как создать эту единую систему координат и главное из любого класса (врага или пули) взять например позицию героя по X и Y ? заранее спасибо P.S. если кто-то сможет описать подробно, буду очень благодарен |
|
|||||
|
Регистрация: May 2010
Сообщений: 59
|
у меня несколько классов,
тут суть немного в другом есть главный класс package { import flash.display.Sprite; import flash.events.*; public class TowerKiller extends Sprite { private var hero:Hero; public static var sWidth:int; public static var sHeight:int; public function TowerKiller() { sWidth = stage.stageWidth; sHeight = stage.stageHeight; hero = new Hero(); hero.x = stage.stageWidth / 2; hero.y = stage.stageHeight / 2; addChild(hero); } } } package { import flash.display.MovieClip; import flash.events.*; import flash.utils.*; public class Hero extends MovieClip { public function Hero() { hero = new MovieClip(); enemyLoader = new EnemyLoader(); addChild(enemyLoader); enemyLoader.update(x, y); } } } класс EnemyLoader подгружает данные врагов, в нем же создаются враги и заносятся в массив package { import flash.display.MovieClip; import flash.events.*; import flash.utils.*; public class EnemyLoader extends MovieClip { public function EnemyLoader() { var enemy:Enemy = new Enemy(данные); enemyList.push(enemy); } ВОТ НА ЭТОМ МЕСТЕ ОСНОВНАЯ БЕДА собственно проблема, в том, что enemy.x и enemy.y отдает нули public function update(heroX:int, heroY:int):void { for (var i:int = 0; i < enemyList.length; i++) { var enemy:MovieClip = enemyList[i]; var dx:Number = enemy.x - heroX; var dy:Number = enemy.y - heroY; var dist:Number = Math.sqrt(dx * dx + dy * dy); var cos:Number = dx / dist; var sin:Number = dy / dist; if (dist > enemy.speed) { enemy.x -= enemy.speed * cos; enemy.y -= enemy.speed * sin; } } } } } собственно метод update вызывается из класса Hero вопрос в том, как правильно сделать, и главное грамотно, что бы из того же класса EnemyLoader получать координаты врагов, созданных в классе Enemy? почему они по нулям? надеюсь понятно объяснил |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|