|
|
|||||
Цитата:
По поводу блюров, когда делал первые автоматы, в итоге сделал в точности, как говорит Zebestov. Долго эксперементировал и так и эдак, пришел к тому, что хочу, чтобы они вертелись быстро и красиво. Попробовал заблюрить, оказалось прям хорошо. В результате пришел к тому, что на каждый барабан сделал по три кадра в кашу заблюреных слотов (так, что просто цветное месиво) и при анимации кручения их просто поочередно менял. Получилось настолько неожиданно красиво и реалистично, что так и оставил. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Да,кстати,ТС, а сколько fps стоит то?На 24 плавную анимацию не получится никак.
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Насчет идеи отрисовать всю ленту в одну битмапину — не забывайте, что для этого вам придется создать НОВУЮ битмапдату высотой в несколько тысяч пикселей, 5 таких штук, и занять ими память (напомню, что битмапы отдельных картинок показывают свои битмапдаты прямо с исходника).
__________________
Reality.getBounds(this); |
|
|||||
Кстати, пользуясь случаем, небольшой оффтопчик: хотел уточнить теорию BitmapData. Я правильно помню, что когда мы создаем статическую BitmapData, а потом на её основе неограниченное количество Bitmap и добавляем их на сцену, то память тратится всего на одну BitmapData? Потому что bd это массив байтов а bitmap это display object? Просто я порыскал на скорую руку по гуглу , вразумительного ответа не нашел быстро. Хочется именно понимать вкратце так ли это и почему это так.
|
|
|||||
Цитата:
Это из практики. Я тоже в свое время долго над этим голову ломал Цитата:
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 28.11.2017 в 18:42. |
|
|||||
[+4 06.05.14]
|
Костян, а замеры есть? А то пока просто говорим. Хочется реальный пример увидеть, прям очень красочный ))) Задача : имеем 50 картинок, хотите в битмапу, хотите как угодно - на каждом барабане, подается на вход позиция, например 20, это значит остановка на 20 картинке, 21,22 визуально, ну и сначала позиция тоже подается перед стартом.
__________________
Марк Tween |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Main.as:
package { import flash.display.Sprite; import flash.events.Event; import flash.text.*; /** * ... * @author */ public class Main extends Sprite { public function Main() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private var reels:Array; private var tf:TextField; private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); tf = new TextField(); tf.type = "input"; tf.width = 50; tf.height = 30; tf.background = true; tf.border = true; //tf.backgroundColor = 0xFF0000; tf.x = tf.y = 20; tf.text = "0.1"; var format:TextFormat = new TextFormat(); format.size = 25; tf.setTextFormat(format); addChild(tf); tf.addEventListener(Event.CHANGE, function (e:Event):void{ var duration:Number = Number(tf.text); if(!isNaN(duration)) { for (var i:uint = 0; i < reels.length; i++) { reels[i].animDuration = duration; } } }); reels = []; for (var i:uint = 0; i < 5;i++) { var reel:Reel = new Reel(150,150); addChild(reel); reels.push(reel); reel.x = i * 155; reel.y =-150; reel.addItem(0, 0xFF0000); reel.addItem(1, 0x00FF00); reel.addItem(2, 0x000FF); reel.addItem(3, 0xFF00FF); reel.addItem(4, 0x00FFFF); reel.spin(); } } } } package { import aze.motion.easing.Linear; import flash.display.Sprite; import flash.geom.Point; import flash.text.TextField; import flash.text.TextFormat; import aze.motion.eaze; /** * ... * @author */ public class Reel extends Sprite { private var items:Array = []; private var cont:Sprite; private var curItem:int = 0; private var itemWidth:Number; private var itemHeight:Number; private var _animDuration:Number = 0.1; public function Reel(itemWidth:Number, itemHeight:Number) { super(); this.itemWidth = itemWidth; this.itemHeight = itemHeight; } public function addItem(n:uint, color:uint):void { var item:Sprite = new Sprite(); item.graphics.beginFill(color, 1); item.graphics.lineStyle(1, 0, 1); item.graphics.drawRect(0, 0, itemWidth, itemHeight); var tf:TextField = new TextField(); tf.text = String(n); tf.textColor = 0; tf.autoSize = "left"; var format:TextFormat = new TextFormat(); format.size = 80; tf.setTextFormat(format); tf.x = item.width * 0.5 - tf.width * 0.5; tf.y = item.height * 0.5 - tf.height * 0.5; item.addChild(tf); items.push(item); } public function spin():void { doSpinAnim(); } private function doSpinAnim():void { if (cont) removeChild(cont); cont = new Sprite(); var _y:Number = 0; for (var i:int = -2; i <= 1; i++) { var n:int = curItem + i; if (n < 0) n+=items.length; if (n > items.length - 1) n = 0; //trace(n); items[n].y = _y; _y += items[n].height; cont.addChild(items[n]); } addChild(cont); var _mask:Sprite = new Sprite(); _mask.graphics.beginFill(0, 0.5); _mask.graphics.drawRect(0, 0, itemWidth, itemHeight*2); var p:Point = new Point(); p = items[curItem].localToGlobal(p); _mask.x = p.x; _mask.y =p.y-itemHeight/2; //stage.addChild(_mask); cont.mask = _mask; eaze(cont).easing(Linear.easeNone).apply({y:0}).to(_animDuration, {y:itemHeight}).onComplete(function():void { curItem--; if (curItem < 0) curItem = items.length - 1; doSpinAnim(); }); } public function set animDuration(value:Number):void { _animDuration = value; } } } Красиво сам сделаешь Последний раз редактировалось undefined; 29.11.2017 в 12:30. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
что это?
|
Часовой пояс GMT +4, время: 23:52. |
|
« Предыдущая тема | Следующая тема » |
|
|