Показать сообщение отдельно
Старый 29.11.2017, 12:11
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 28  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Main.as:
Код AS3:
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();
			}
		}
 
	}
 
}
Reel.as:
Код AS3:
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;
		}
	}
 
}
В инпутфилде скорость анимации.
Красиво сам сделаешь
slottest.swf   (23.0 Кб)
Вложения
Тип файла: swf slottest.swf (23.0 Кб, 77 просмотров)


Последний раз редактировалось undefined; 29.11.2017 в 12:30.