PDA

Просмотр полной версии : замена scaleX


Vansimar
24.10.2011, 22:07
Подскажите,как можно избежать использования scaleX, мне нужно повернуть персонажа, использовал mc.scaleX=-1;
mc.scaleX=1; но это очень влияло на работоспособность игры, в левую сторону персонаж ходил с жуткими тормозами

tsarapkabel
25.10.2011, 01:56
Заменить scale можно матрицей преобразования.
var mySprite:Sprite = new Sprite();
var myMatrix:Matrix = mySprite.transform.matrix;
myMatrix.a = -1; //'a' это scaleX
myMatrix.d = 1; //'d' это scaleY

3p.station
25.10.2011, 02:49
Заменить scale можно
мне кажется что неможно

ProxyGreen
25.10.2011, 04:19
Можно создать спрайты для обоих видов персонажа.

goodguy
25.10.2011, 07:26
Можно создать спрайты для обоих видов персонажа.
По-моему это самый разумный способ.

Заменить scale можно матрицей преобразования.
И произойдет то же самое )

Vansimar
25.10.2011, 10:50
то есть просто создать еще один мувиклип с отраженным персонажем?

goodguy
25.10.2011, 11:02
именно

Vansimar
25.10.2011, 11:47
все равно не помогло,добавляю больше шести персонажей - врагов и все...

GBee
25.10.2011, 11:56
Враги наверно векторные и волосы развеваются на ветру.

Vansimar
25.10.2011, 12:03
нет)волосы не развиваются,но враги векторные, нашел вот этот способ кеширования анимации (http://blog.touchmypixel.com/2008/04/as3-bitmap-cached-animations/) , но как тогда управлять мувиклипом..этот класс создает свой тип, и к нему как к мувику уже нельзя обращатся...я совсем в растерянности..есть же решение..но я не знаю какое(

gloomyBrain
25.10.2011, 12:29
Ну напишите свой класс, наследующий MovieClip, кто же мешает?

СлаваRa
25.10.2011, 12:35
там класс Animation с поведением как у MovieClip'а, если мне память не изменяет.

Vansimar
25.10.2011, 14:22
ну вот самое элементарное не работает,использовал эту библиотеку , хочу остановить мувик на первом кадре а он не останавливается

Inet_PC
25.10.2011, 14:35
Может так?
var animationManager:AnimationManager = new AnimationManager();
animationManager.addAnimation("man", "Anima");
var clip:Animation = animationManager.getAnimation("man");
clip.x = 30;
clip.y = 34;
clip.gotoAndStop(1); //тут не хочет останавливаться на первом кадре
clip.stop();
addChild(clip);

Vansimar
25.10.2011, 15:00
Я вот еще не пойму,почему точка регистрации не правильная, те не от центра мувика,как я сделал,а от левого верхнего угла мувика персонажа?

Inet_PC
25.10.2011, 15:04
Потому что это самописный класс и никто и не думал прикручивать точку прявязки. А Flash это делал за Вас. По большому счету это тоже не проблема. Поиск рулит.

СлаваRa
25.10.2011, 15:11
Я вот еще не пойму,почему точка регистрации не правильная, те не от центра мувика,как я сделал,а от левого верхнего угла мувика персонажа?

почему не правильная? на мой взгляд самая удобная точка.

Vansimar
25.10.2011, 15:15
ну просто персонажа удобно отражать горизонтально если точка привязки в середине персонажа находится

Добавлено через 7 часов 47 минут
Огромная проблема, у меня просто у главного мувика есть кадры,в этих кадрах еще мувики с своими инстансами,не получается обратится к внутренним мувикам ,пробовал так var animationManager:AnimationManager = new AnimationManager();
animationManager.addAnimation("man", "Anima");
var clip:Animation = animationManager.getAnimation("man");
clip.x = 30;
clip.y = 34;
clip.gotoAndStop(1);
clip.stop();
clip.GetChildByName("square").gotoAndStop(2);
clip.GetChildByName("square").stop();

addChild(clip);
а компилятор говорит что GetChildByName неопределенный метод в классе Animation , как мне можно решить эту проблему?

derhab
26.10.2011, 22:55
компилятор говорит что GetChildByName неопределенный метод в классе Animation , как мне можно решить эту проблему?
использовать определенный метод вместо неопределенного

Vansimar
26.10.2011, 23:04
полезный совет..да....

ProxyGreen
26.10.2011, 23:40
Может со строчной буквы написать, сомневаюсь что метод с заглавной буквы начинается.

derhab
27.10.2011, 00:42
полезный совет..да....
скажите, откуда вы этот метод взяли?

Vansimar
27.10.2011, 13:01
import flash.utils.getDefinitionByName;
clip.getChildByName("square").gotoAndStop(2);
clip.getChildByName("square").stop();
вот не идет тут

Inet_PC
27.10.2011, 14:11
Если clip это экземпляр класса Animation, то весь Ваш код работать не будет, так как там нет movieClipa. Там закэшированные Bitmap.

Vansimar
27.10.2011, 16:32
а как доступится к внутренним мувикам тогда?

Inet_PC
27.10.2011, 16:33
Если Вы его растрировали, то уже никак. Ну или храните ссылку на него, только, что это Вам даст? Если Вы хотите что-то изменить в анимации, то придется перекэшировать, и вот тут то точно тормоза начнутся.