|
|
|||||
Регистрация: Mar 2013
Сообщений: 41
|
Циклы и спрайты
Создаю циклом спрайты в них добавляю по 2 битмапа. Дальше у меня есть таймер который должен делать видимым и не видимым один а потом другой битмап(то есть эт анимация такая). Проблема в том, что это происходит только с одним спрайтом. Как быть?
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Если хотите, чтоб вам помогли, покажите код
|
|
|||||
Цитата:
Дабагер -один из способов отвечать себе на вопросы поочередно, а не на все сразу.
__________________
... |
|
|||||
Регистрация: Mar 2013
Сообщений: 41
|
public var kom_zt:Timer; public var komZm:Bitmap; public var komZm1:Bitmap; public var komZmSprite:Sprite; public var komZmB:Body; //...// for(var k:int=0; k<5; k++){ komZm=new Bitmap(); komZm.bitmapData = new BitmapData(Atlas.atlasXML.sprite[25].@w, Atlas.atlasXML.sprite[25].@h); komZm.bitmapData.copyPixels(Preloader.ATLAS, new Rectangle(Atlas.atlasXML.sprite[25].@x, Atlas.atlasXML.sprite[25].@y, Atlas.atlasXML.sprite[25].@w, Atlas.atlasXML.sprite[25].@h), new Point(0, 0)); komZm.smoothing=true; komZm1=new Bitmap(); komZm1.bitmapData = new BitmapData(Atlas.atlasXML.sprite[26].@w , Atlas.atlasXML.sprite[26].@h); komZm1.bitmapData.copyPixels(Preloader.ATLAS, new Rectangle(Atlas.atlasXML.sprite[26].@x, Atlas.atlasXML.sprite[26].@y, Atlas.atlasXML.sprite[26].@w, Atlas.atlasXML.sprite[26].@h), new Point(0, 0)); komZm1.smoothing=true; komZmSprite=new Sprite; komZmSprite.addChild(komZm); komZmSprite.addChild(komZm1); komZm.x -= komZm.width/2; komZm.y -= komZm.height/2; komZm1.x -= komZm1.width/2; komZm1.y -= komZm1.height/2; Mir.addChild(komZmSprite); komZmSprite.width=(stage.stageWidth*93)/768; komZmSprite.scaleY=komZmSprite.scaleX; komZmB=new Body(BodyType.DYNAMIC, new Vec2(0, 0)); komZmB.isBullet=true; komZmB.shapes.add(new Polygon(Polygon.box(komZmSprite.width, komZmSprite.height), Material.steel())); komZmB.position.setxy(stage.stageWidth/5+((stage.stageWidth*3)/5)*Math.random(), stage.stageHeight/10); komZmB.allowRotation=false; komZmB.space=space; komZmB.userData.graphic=komZmSprite; komZmB.velocity.setxy(stage.stageWidth/100, stage.stageHeight/100); //после того как выполнилась функция с циклам запускаю таймер// private function anim():void{ kom_zt = new Timer(50); kom_zt.start(); kom_zt.addEventListener(TimerEvent.TIMER, kom_ztf); }; private function kom_ztf (e:TimerEvent):void{ if((kom_zt.currentCount & 1) == 0) { komZm1.visible=true;komZm.visible=false; } else{ komZm.visible=true;komZm1.visible=false;} |
|
|||||
Это подсчет четного числа?
Такие вещи лучше выносить в промежуточные переменные Ну возможно таймер никогда не принимает четные значения Возможно один из спрайтов просто белый, они отрисовуются без анимаций? Упростите в разбейте код на отдельные куски и упростите на ключевых моментов постепенно усложняя или пройдетесь по дебагу. Разобратьсся взуально втаких вещах бесперспективное занятие.
__________________
... Последний раз редактировалось Александр Мостовой; 07.04.2013 в 13:38. |
|
|||||
Регистрация: Mar 2013
Сообщений: 41
|
Таймер работает хорошо, для одного спрайта. ПРОВЕРЕН. Да и как таймер может не принимать четные значения!
Добавлено через 5 часов 14 минут Ну кто знает? Последний раз редактировалось xrapa; 07.04.2013 в 18:58. |
|
|||||
Попробуйте большие значения - 50 мсек это как-то быстро. Может мерцание монитора совпало с частотой смены :о)
Оффтоп - Ваш стиль очень уж знаком. Добавлено через 3 минуты Хотя ошибка очевидна. Дайте угадаю, работает только последний спрайт. Потому что ссылки остались на последние созданные объекты.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Mar 2013
Сообщений: 41
|
GBee, да вы правы. Но как это исправить?
|
Часовой пояс GMT +4, время: 09:40. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|