`
kinglong
  • 浏览: 32739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

ArtDigit 艺术数字类

阅读更多
此类主要用于使用动画元件来显示对应的数字,并支持数字缓冲滚动显示功能!并有比较成熟的资源数字样式显示管理功能

package game.assist.view {
	import com.greensock.TweenMax;

	import flash.display.MovieClip;

	import game.net.File;
	import game.collection.HashMap;

	import flash.display.Sprite;

	/**
	 * ArtDigit 艺术数字
	 * @author Kinglong
	 * @since 2012-7-26
	 */
	public class ArtDigit extends Sprite {
		/**
		 * 资源路径
		 */
		public static var resourcePath : String = "";
		/**
		 * 资源列表
		 */
		private static const resourceMap : HashMap = new HashMap();
		/**
		 * 回调列表
		 */
		private static const callbackList : Vector.<Function> = new Vector.<Function>();

		/**
		 * 字符转成帧号
		 * @param chat 字符
		 */
		private static function charToFrame(chat : String) : int {
			switch(chat) {
				case "-":
					return 11;
				case "+":
					return 12;
			}
			return int(chat) + 1;
		}

		/**
		 * 改变回调
		 */
		public var onChange : Function = new Function();
		/**
		 * 是否初始化
		 */
		private var _inited : Boolean;
		/**
		 * 资源是否加载
		 */
		private var _loaded : Boolean;
		/**
		 * 数字样式
		 */
		private var _style : String;
		/**
		 * 数值
		 */
		private var _value : int;
		/**
		 * 数值字符
		 */
		private var _chars : String;
		/**
		 * 加号是否显示
		 */
		private var _addSymbolVisible : Boolean;
		/**
		 * 数字列表
		 */
		private var _numberList : Array;
		/**
		 * 间隔
		 */
		private var _spacing : int;
		/**
		 * 样式类
		 */
		private var _styleClass : Class;
		/**
		 * 缓冲对象
		 */
		private var _vo : TweenVO;

		/**
		 * 构造
		 * @param style 样式
		 */
		public function ArtDigit(style : String = null) {
			_inited = false;
			_loaded = false;
			if (style) {
				init(style);
			}
			_value = 0;
			_spacing = 2;
			_chars = "";
			_numberList = [];

			_vo = new TweenVO();

			_addSymbolVisible = false;

			mouseChildren = false;
			mouseEnabled = false;
		}

		/**
		 * 初始化
		 * @param style 样式
		 */
		public function init(style : String) : void {
			if (inited) {
				return;
			}
			_style = style;
			if (!resourceMap.containsKey(style)) {
				loadStyle();
			} else if (resourceMap.get(style) is File) {
				callbackList.push(updateStyle);
			} else {
				updateStyle();
			}
			_inited = true;
		}

		/**
		 * 加载样式
		 */
		private function loadStyle() : void {
			var url : String = resourcePath + style + ".swf";
			var file : File = new File();
			resourceMap.put(style, file);
			callbackList.push(updateStyle);
			file.onComplete = function() : void {
				resourceMap.put(style, file.getClassByName("Style"));
				for each (var func:Function in callbackList) {
					if (func != null) {
						func();
					}
				}
				callbackList.length = 0;
			};
			file.load(url);
		}

		/**
		 * 更新样式
		 */
		private function updateStyle() : void {
			_styleClass = resourceMap.get(style);
			_loaded = true;
			this.value = value;
		}

		/**
		 * 加号是否显示
		 */
		public function set addSymbolVisible(value : Boolean) : void {
			_addSymbolVisible = value;
			render(this.value);
		}

		/**
		 * 数值
		 */
		public function set value(num : int) : void {
			_value = num;
			TweenMax.killTweensOf(_vo);
			_vo.value = num;
			render(num);
		}

		public function get value() : int {
			return _value;
		}

		/**
		 * 缓动到指定数值
		 * @param num 指定数值
		 */
		public function tweenTo(num : int) : void {
			if (!loaded) {
				value = num;
				return;
			}
			TweenMax.to(_vo, 0.8, {value:num, onUpdate:tweenUpdateHandler});
		}

		/**
		 * 缓动更新处理
		 */
		private function tweenUpdateHandler() : void {
			render(_vo.value);
		}

		/**
		 * 数字间隔
		 */
		public function set spacing(value : int) : void {
			if (_spacing == value) {
				return;
			}
			_spacing = value;
			_chars = "";
			render(value);
		}

		public function get spacing() : int {
			return _spacing;
		}

		/**
		 * 渲染
		 * @param num 数值
		 */
		private function render(num : int) : void {
			if (!loaded) {
				return;
			}
			var str : String = new String(num);
			if (num > 0 && _addSymbolVisible) {
				str = "+" + str;
			}
			if (_chars == str) {
				return;
			}
			_chars = str;
			renderStyle();
			onChange();
		}

		/**
		 * 渲染数字样式
		 */
		private function renderStyle() : void {
			var i : int;
			var mc : MovieClip;
			var len : int = Math.max(_numberList.length, _chars.length);
			var dx : int = 0;
			for (i = 0; i < len; i++) {
				if (i >= _numberList.length) {
					mc = new _styleClass();
					mc.stop();
					_numberList.push(mc);
				}
				if (i < _chars.length) {
					mc = _numberList[i];
					if (!contains(mc)) {
						addChild(mc);
					}
					mc.gotoAndStop(charToFrame(_chars.charAt(i)));
					mc.y = 0;
					mc.x = dx;
					dx += mc.width + spacing;
				}
				if (i >= _chars.length) {
					mc = _numberList[i];
					if (contains(mc)) {
						removeChild(mc);
					}
				}
			}
			if (_numberList.length > _chars.length) {
			} else if (_numberList.length < _chars.length) {
				for (i = _numberList.length; i < _chars.length; i++) {
					mc = new _styleClass();
					mc.stop();
					addChild(mc);
					_numberList.push(mc);
				}
			}
		}

		/**
		 * 当前样式
		 */
		public function get style() : String {
			return _style;
		}

		/**
		 * 是否初始化
		 */
		public function get inited() : Boolean {
			return _inited;
		}

		/**
		 * 样式是否加载
		 */
		public function get loaded() : Boolean {
			return _inited && _loaded;
		}

		/**
		 * 移动
		 */
		public function move(x : int, y : int) : void {
			this.x = x;
			this.y = y;
		}

		/**
		 * 销毁
		 */
		public function dispose() : void {
			TweenMax.killTweensOf(_vo);
			for each (var mc : MovieClip in _numberList) {
				mc.stop();
				if (contains(mc)) {
					removeChild(mc);
				}
			}
			_numberList = null;
			var index : int = callbackList.indexOf(updateStyle);
			if (index != -1) {
				callbackList.splice(index, 1);
			}
		}
	}
}
class TweenVO {
	public var value : int = 0;
}

分享到:
评论
2 楼 myjave 2012-09-29  
哦 是我搞错了
这个怎么使用
1 楼 myjave 2012-09-29  
这个类拷贝靠flash里报错

相关推荐

    数字媒体艺术概论.pdf

    《数字媒体艺术概论》一书探讨了在20世纪90年代以来,随着电脑普及和网络技术的快速发展,数字媒体艺术如何成为一个新兴且重要的艺术形式。数字媒体艺术的出现,打破了传统艺术创作的边界,艺术家们不再局限于传统的...

    针对传统艺术数字化CAD技术研究.pdf

    在数字化时代,随着技术的迅猛发展,传统艺术的表现形式也在发生着翻天覆地的变化。CAD技术(计算机辅助设计技术)作为一种强有力的数字化工具,在传统艺术领域的应用逐渐广泛。本文将探讨CAD技术在传统艺术数字化中...

    数字媒体艺术专业毕业设计论文.doc

    由于数字媒体艺术专业在我国艺术类高校或者综合类艺术学校及职业学校教学学校起步晚,发展还不够成熟,这就造成课程体系不够明确,高校师资力量不足,学生就业不对口等诸多问题。CDIO 人才培养模式恰恰适合技术性与...

    数字媒体艺术设计专业教学标准0407(20201124224438).docx.pdf

    数字媒体艺术设计专业教学标准0407(20201124224438).docx.pdf数字媒体艺术设计专业教学标准0407(20201124224438).docx.pdf数字媒体艺术设计专业教学标准0407(20201124224438).docx.pdf数字媒体艺术设计专业教学标准...

    多类SVM在图像艺术属性分类中的应用研究

    关键词“支持向量机”、“二叉树多类分类算法”和“图像艺术属性”贯穿了整个研究过程,指导了研究的方向和方法,突出了研究的核心内容。中图分类号TP391、文献标识码A以及文章编号***(2009)***均为本研究文献的重要...

    数字媒体艺术创作.docx

    《数字媒体艺术创作的探索与应用》 数字媒体艺术,作为一种新兴的艺术表现形式,已经在全球范围内引起了广泛关注。它结合了科技与艺术,以其独特的魅力拓宽了艺术创作的边界。在中国,数字媒体艺术创作正处于快速...

    数字媒体艺术.zip

    《数字媒体艺术》 数字媒体艺术,作为21世纪新兴的艺术形式,是科技与艺术的完美结合,它涵盖了视觉设计、交互设计、动画、游戏设计、虚拟现实、增强现实、网络艺术等多个领域。这一概念的出现,打破了传统艺术的...

    硬件架构的艺术 数字电路的设计方法与技术.pdf

    该文档介绍FPGA相关知识,包括时序分析基础知识,值得一看

    数字媒体艺术展望未来

    数字媒体艺术专业是新专业,相信大家都数字媒体艺术有自己的展望未来观点。。

    数字艺术及影响

    这类艺术作品通常通过网络、媒体和计算机等载体进行传播。 **表现形式:** - **录像及互动装置**:结合视频技术和观众互动体验的艺术形式。 - **Flash动画**:一种流行的二维动画创作工具。 - **多媒体**:集成文本...

    数字媒体艺术的创新及发展研究.docx

    【数字媒体艺术的创新及发展研究】 随着信息技术的飞速发展,数字媒体艺术正在逐步颠覆传统艺术的表现形式,成为艺术文化领域中一股不可忽视的力量。数字媒体艺术是信息技术、图像处理技术、通信技术和艺术设计等多...

    数字艺术与文化创意产业(2015)

    《数字媒体艺术概论》课程第五章 数字艺术与文化创意产业(2015) 课程PPT 《数字媒体艺术概论》课程第五章 数字艺术与文化创意产业(2015) 课程PPT 《数字媒体艺术概论》课程第五章 数字艺术与文化创意产业(2015) ...

    数字媒体艺术史

    数字媒体艺术史使大家能够初步了解多媒体的发展,提高艺术修养,同时了解它的发展史~

    人工智能对数字媒体艺术实践的影响.pdf

    人工智能对数字媒体艺术实践的影响.pdf

    数字媒体艺术理论概述(2015版)

    《数字媒体艺术概论》课程第一章 数字媒体艺术理论概述 课程PPTT

    面向高职院校艺术设计类专业Python语言的教学策略研究.pdf

    通过上述策略,艺术设计类学生可以在轻松愉快的氛围中学习Python编程,同时满足高职院校数字媒体艺术设计等专业对学生计算机程序设计能力的需求。通过适当的Python教学,能够培养出既懂艺术又懂技术的复合型人才,为...

    数字艺术对文化艺术传承的影响 心得体会 .docx

    数字艺术是21世纪文化艺术领域的一大创新,它以高速发展的科技为支撑,借助数字技术、信息技术,改变了传统艺术的创作方式和审美体验。数字艺术不仅为艺术家提供了全新的表现空间,还对文化艺术的传承产生了深远影响...

    数字艺术品铸造交易平台NFT交易商城类鲸探类唯艺术.txt

    数字艺术品铸造交易平台NFT交易商城类鲸探类唯艺术

    tensorflow识别图片数字

    在这个特定的例子中,我们将探讨如何使用 TensorFlow 来识别图片中的数字,具体是基于 MNIST 数据集的训练模型,然后应用这个模型来识别自定义图片中的数字。 MNIST 数据集是一个经典的手写数字识别数据集,包含 60...

Global site tag (gtag.js) - Google Analytics