- 浏览: 590143 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
package com.xlands.avatar { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; import flash.utils.Timer; import org.aswing.AsWingManager; import org.aswing.JFrame; public class BitmapDataExample extends Sprite { private var url:String = "img.png"; private var _timer:Timer = new Timer(250, 0);; private var _bitMap:Bitmap = new Bitmap(); private var _h_pos:int = 0; private var _v_pos:int = 0; private var _playerBitmapManager:PlayerBitmapManager; private var _loader:Loader; private var _request:URLRequest; private var _frm:JFrame; /** 横向切割数 */ private var _hNum:int; /** 纵向切割数 */ private var _vNum:int; public function BitmapDataExample($hNum:int = 7, $vNum:int = 6) { AsWingManager.initAsStandard(this); _hNum = $hNum; _vNum = $vNum; _frm = new JFrame(null, "浏览"); _frm.setSizeWH(200, 200); _playerBitmapManager = new PlayerBitmapManager(_hNum, _vNum); configureAssets(); } private function configureAssets():void { _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); _request = new URLRequest(url); _loader.load(_request); } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); _playerBitmapManager.addSpriteBitmap(url, image); _frm.getContentPane().addChild(_bitMap); _frm.show(); _timer.addEventListener(TimerEvent.TIMER, __onTimerHandler); _timer.start(); } private function __onTimerHandler(event:TimerEvent):void{ if(_h_pos == _vNum){ _timer.stop(); }else{ _bitMap.bitmapData = _playerBitmapManager.getSpriteBitmap("img.png", _h_pos, _v_pos); if(++_v_pos == _hNum){ ++_h_pos; _v_pos = 0; } } } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
其中用到的工具类PlayerBitmapManager.as
package com.xlands.avatar { import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.getTimer; import org.aswing.util.HashMap; /** * 人物形象图像数据管理者 * @author senkay */ public class PlayerBitmapManager { private var _hNum:int; private var _vNum:int; private static var bitmaps:HashMap; private static var bitNumMaps:HashMap; private static var localplayerPath:String; public function PlayerBitmapManager($hNum:int, $vNum:int){ this._hNum = $hNum; this._vNum = $vNum; } private function getBitmaps():HashMap{ if (bitmaps == null){ bitmaps = new HashMap(); } return bitmaps; } private function getBitNumMaps():HashMap{ if (bitNumMaps == null){ bitNumMaps = new HashMap(); } return bitNumMaps; } public function hasSpriteBitmap(path:String):Boolean{ return getBitmaps().containsKey(path); } public function addSpriteBitmapCout(path:String):void{ getBitNumMaps().put(path, (getBitNumMaps().get(path) as int)+1); } /** * 加入人物形象数据 * @parm path 路径 * @bitmap 人物形象数据 */ public function addSpriteBitmap(path:String, bitmap:Bitmap):void{ var time:Number = getTimer(); if (!getBitmaps().containsKey(path)){ if (bitmap.width==0 || bitmap.height==0) return; var bitmapdata:BitmapData = bitmap.bitmapData; var sWidth:Number = Math.floor(bitmap.width/_hNum); var sHeight:Number = Math.floor(bitmap.height/_vNum); var bitarray:Array = new Array(); for (var i:int=0; i<_vNum; i++){ var arr:Array = new Array(); for (var j:int=0; j<_hNum; j++){ if (i == 5 && j == 2){ continue; }else{ try{ var bmd:BitmapData = new BitmapData(sWidth,sHeight,true,0x00FFFFFF); bmd.copyPixels(bitmapdata, new Rectangle(sWidth*j, sHeight*i, sWidth, sHeight), new Point(0,0)); }catch(e:Error){ trace("the copyPixels is error:"+e); return; } arr.push(bmd); } } bitarray.push(arr); getBitNumMaps().put(path, 1); } getBitmaps().put(path, bitarray); }else{ getBitNumMaps().put(path, (getBitNumMaps().get(path) as int)+1); } //trace("@@@@@@@@@@@@:"+(getTimer()-time)); } /** * 根据形象路径和坐标返回形象数据 * @parm path 路径 * @parm h_pos,v_pos 数组坐标 * @return BitmapData 形象数据 */ public function getSpriteBitmap(path:String, h_pos:int, v_pos:int):BitmapData{ if (getBitmaps().containsKey(path)){ return (getBitmaps().get(path) as Array)[h_pos][v_pos] as BitmapData; }else{ return null; } } /** * 删除形象数据 * @parm path 形象路径 */ public function delSpriteBitmap(path:String):void{ if (getBitmaps().containsKey(path)){ var num:int = getBitNumMaps().get(path); if (num > 1){ getBitNumMaps().put(path, num-1); }else{ getBitmaps().remove(path); getBitNumMaps().remove(path); } } } /** * 清除所有的形象数据 */ public function clearAllSprite():void{ var bitarray:Array = getBitmaps().get(localplayerPath); getBitmaps().clear(); getBitNumMaps().clear(); if (bitarray){ getBitmaps().put(localplayerPath, bitarray); getBitNumMaps().put(localplayerPath, 1); } } /** * 设置主人物的路径,用以清楚数据时候恢复 */ public function setLocalPlayerPath(path:String):void{ localplayerPath = path; } /** * 查询形象数据状态 * @return String 状态 */ public function getDebugInfo():String{ return "形象数据状态:数量="+getBitmaps().keys().length; } } }
发表评论
-
AS3 条件编译
2013-06-07 09:38 1350转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2347TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2163ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1492通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1557/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1855将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1838AS类中跳转 navigate ... -
Flash与Javascript交互时可用ExternalInterface类
2010-06-29 10:17 3681Flash与Javascript交互时可用ExternalIn ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1467转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1411Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2530navigateToURL() public fun ... -
ActionScript中Http请求
2010-06-19 09:42 3175ActionScript中Http请求 因我是用MVC模式来 ... -
ActionScript字符串工具
2010-06-04 09:44 3297ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1407加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1783AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2080最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1386如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1308这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 3027要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1950当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ...
相关推荐
在本文中,我们将深入...通过以上步骤,你可以成功地利用MFC开发出一个在对话框模式下连续播放位图动画的程序。这个过程涵盖了MFC的基础知识,如对话框、位图处理、定时器以及绘图操作,是提升MFC编程技能的好实践。
位图动画程序是一种将一系列静态位图图像组合起来,通过快速连续播放来形成动态效果的技术。在计算机图形学中,位图(Bitmap)是图像的一种数据存储格式,它由像素阵列组成,每个像素有自己的颜色信息。位图动画通常...
位图动画是一种通过连续显示一系列位图图像来创建动态效果的技术。在VB6.0(Visual Basic 6.0)中实现位图动画,开发者通常会利用编程逻辑控制图像的顺序显示,从而达到动画的效果。这里我们将深入探讨如何使用VB6.0...
7. **控制动画流程**: 可以添加按钮或菜单项来启动、暂停、停止或改变动画的播放速度,这需要在窗口类中处理相应的用户交互消息。 8. **内存管理和清理**: 当窗口关闭时,记得释放所有加载的位图资源,防止内存泄漏...
1. **帧管理**:存储并组织每一帧的位图数据,确保它们按正确的顺序播放。 2. **时间同步**:控制每一帧的显示时间,保持动画流畅性。 3. **颜色映射**:动态调整调色板,改变像素的颜色表示。 4. **像素操作**:...
本文将深入探讨如何在Android应用中正确地显示`GIF`图片,包括解析`GIF`文件、使用`AnimationDrawable`播放位图以及缓存已解析的`GIF`内容。 首先,我们要了解`GIF`图片的工作原理。`GIF`文件由一系列连续的帧组成...
本篇将深入探讨如何使用编程实现一个BMP位图转换为AVI视频的例程。BMP(Bitmap)是一种常见的位图格式,而AVI(Audio Video Interleave)则是一种广泛使用的视频容器格式。将BMP图像序列转换成AVI视频涉及到图像编码...
在技术实现层面,位图技术是构建《俄罗斯方块》游戏界面不可或缺的一部分。位图,也称为光栅图像,是一种像素矩阵的数据结构,每一像素包含了颜色值,共同构成图像。在游戏开发中,位图技术被用来绘制各种游戏元素,...
9. **用户交互设计**: 考虑到动画可能需要用户控制,比如播放、暂停、快进等功能,需要设计相应的用户界面元素和事件处理函数。 10. **性能优化**: 对于大型或高帧率的动画,优化代码性能至关重要。这可能包括减少...
在本文中,我们将深入探讨如何使用VC++ 6.0打开和显示位图(BMP)文件。位图文件是一种常见的图像格式,广泛应用于各种图形处理任务。在VC++ 6.0环境下,通过理解BMP文件结构和利用C++编程技巧,我们可以实现对BMP...
在Windows环境中,MCI( Multimedia Control Interface)是一个常用的音频处理组件,它可以播放多种格式的音频文件,并且可以与MFC无缝结合。 然而,开发者提到游戏还存在一些未解决的问题,这可能涉及到游戏的性能...
位图动画是一种常见的计算机图形动画技术,通过连续播放一系列位图图像来创造出动态的效果。在VB6.0(Visual Basic 6.0)环境中,我们可以利用编程技术实现位图动画的制作。VB6.0是Microsoft公司推出的一种可视化...
总的来说,“NewBmpProgCtrl.rar_vc 进度条_位图进度条_游戏_VC_进度条”项目展示了如何利用VC++和MFC来创建一个具有个性化的进度条控件,并结合声音播放,提升用户体验。通过学习和实践这个项目,开发者可以深化对...
不过,需要注意的是,这只是一个基础的实现方式,实际的位图动画可能需要更复杂的逻辑,例如处理帧速率、循环播放、帧之间的过渡效果等。希望这个概述能帮助你理解如何在VC++环境中创建位图动画。
5. **动画循环**:编程实现动画的播放逻辑,包括帧速率控制、动画序列的循环、暂停和停止等。 6. **资源管理**:处理位图资源的加载、释放,避免内存泄漏,尤其在处理大量帧时尤为重要。 7. **用户交互**:结合...
本资源包含的是易语言中与图形用户界面(GUI)相关的组件源码,具体包括GIF动画按钮、位图按钮、分隔条和对齐等元素的实现。这些组件是构建高效、美观的用户界面的关键部分。 首先,我们来看“GIF动画按钮源码”。...
在这个特定的案例中,我们关注的是一个基于MFC(Microsoft Foundation Classes)框架的多媒体播放器,该播放器具备播放.WAV音频文件、.AVI视频文件、集成Web浏览器以及显示BMP位图图片的功能。以下是对这些知识点的...
- 添加两个成员变量来跟踪动画状态:一个布尔值表示是否正在播放,另一个记录当前显示的帧数。 - 实现开始和暂停按钮的响应函数,开始时启动定时器,暂停时停止定时器,并根据当前状态更新控件显示。 7. **释放...
此外,`android.widget.GifView`或自定义的视图组件可能包含对动态位图的处理逻辑,比如自动循环播放和手动控制播放等功能。 为了优化性能,Android系统还会进行内存管理和缓存策略。例如,Android可能会根据内存...