Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   полоса жизни, как создать? (http://www.flasher.ru/forum/showthread.php?t=144828)

DenverZ 22.09.2010 13:19

полоса жизни, как создать?
 
Здравствуйте,
подскажите плиз, как правильно сделать полосу жизней (для героя или монстров) ?

на данный момент сделал (но работает не совсем верно):

создал три символа
1) белый прямоугольник, с черным контуром, 100 пикселей шириной и 5 пикселей высотой (имя: mc_LiveBorder)
2) красный прямоугольник без контуров, ширина 100, высота 5 (имя: mc_LiveRed)
3) зеленый прямоугольник без контуров, ширина 100, высота 5 (имя: mc_LiveGreen)

далее например для героя:

Код AS3:

private var liveRed:MovieClip;
private var liveGreen:MovieClip;
private var live:MovieClip;

далее

Код AS3:

live = new mc_LiveBorder();
live.x = 5;
live.y = 5;
 
liveRed = new mc_LiveRed();
liveGreen = new mc_LiveGreen();
 
live.addChild(liveRed);
live.addChild(liveGreen);
addChild(live);

собственно в левом верхнем углу есть полоска жизни героя
далее уменьшаю жизни по формуле:

Код AS3:

liveGreen.width -= (damage * live.width) / 100;

где damage - это урон герою, например 5
live.width - ширина полоски, в данном примере 100

для героя уменьшается все ок, а вот если создать монстра и прицепить к нему полосу длиной например 30 пикселей, все идет коту под хвост =) ничего не работает...

вижу, что все сделано топорно и не верно, я новичек и только учусь
подскажите плиз, как правильно сделать полосу жизни и главное, как правильно ее уменьшать, не зависимо от ее ширины

т.е. если по русски, как мне привязать кол-во жизней героя/монстра к полоске, причем полоса фиксированного размера, например не более 100 пикселей (что бы в диз вписалась), а вот кол-во жизней может быть разной, 10 или 500 не важно, при любом раскладе 10 или 500 она должна быть заполнена полностью, а вот когда наносят урон, уменьшалась исходя из урона
т.е. пример:

полоса 100 пикселей,
заполнена 200 жизней
т.е. на данном этапе она полностью на 100% заполнена зеленым
наносят урон, например 30
полоска должна уменьшится на 15% (вроде правильно написал? (30 / 200) * 100)

заранее благодарю

Добавлено через 2 минуты
Забыл добавить, что полоса width может быть любой, в зависимости от того, к кому цепляется
например у героя ее ширина будет 100, а у монстра может быть 30

-De- 22.09.2010 13:29

Код AS3:

lifeLine.scaleX = HP/maxHP;


DenverZ 22.09.2010 13:31

чет не то...

samana 22.09.2010 15:08

Цитата:

Сообщение от DenverZ (Сообщение 937749)
чет не то...

Совершенно правильно вам подсказали. Смотрите, какой бы полоса ни была шириной, её scaleX изначально равна 1, то-есть 100%
Например есть монстр, у него 30 жизней, урон по нему отнял 15 жизней - половину.
Код AS3:

var monsterMaxLife=30
var monsterLife=30;
monsterLife-=15;
monsterLifeBar.scaleX=monsterLife/monsterMaxLife;//0.5


DenverZ 22.09.2010 16:33

ага теперь все понятно, спасибо :-)

спасибо DE
спасибо Samana


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

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