- 浏览: 602634 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
package
{
import flash.display.Sprite;
[SWF(width=480, height=320, frameRate=24, backgroundColor=0xE2E2E2)]
public class ActionScriptBlittingPart1 extends Sprite
{
public function ActionScriptBlittingPart1()
{
addChild(new BrownCollector());
}
[Embed(source="spritesheets/browncollector.png")]
public var BrownCollector:Class;
}
}
要运行第一个示例,请参照下列步骤:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Point;
import flash.geom.Rectangle;
[SWF(width=480, height=320, frameRate=24, backgroundColor=0xE2E2E2)]
public class ActionScriptBlittingPart2 extends Sprite
{
public function ActionScriptBlittingPart2()
{
// Create input bitmap instance
spritesheet = (new BrownCollector() as Bitmap).bitmapData;
// Add a Bitmap to the display list that will copyPixels() to.
canvas = new BitmapData(480, 320, true, 0xFFFFFF);
addChild(new Bitmap(canvas));
rect = new Rectangle(0, 0, 40,40); // 1st Tile
//** Section 1 ** //
// rect = new Rectangle(40, 0, 40, 40); // 2nd Tile
// rect = new Rectangle(80, 0, 40, 40); // 3rd Tile
// ...
// rect = new Rectangle(160, 120, 40, 40); // 20th Tile
canvas.copyPixels(spritesheet, rect, new Point(0, 0));
//** END Section 1 **/
/** Section 2 ** //
for (var i:int = 0; i < 20; i++)
{
rect.x = (i % 5) * 40;
rect.y = int(i / 5) * 40;
canvas.copyPixels(spritesheet, rect, new Point(i*10, 0));
// Section 3:
// canvas.copyPixels(spritesheet, rect,
// new Point(i*10, 0), null, null, true);
}
//** END Section 2 **/
}
[Embed(source="spritesheets/browncollector.png")]
public var BrownCollector:Class;
public var canvas:BitmapData;
public var spritesheet:BitmapData;
public var rect:Rectangle;
}
}
在Package Explorer中的ActionScriptBlittingPart2.as文件上点击右键并选择Run Application。你将会看到来自sprite sheet的第一个单无格显示在浏览器中(见图2)。/**
* Handles the timer
*/
private function enterFrameHandler(event:Event):void
{
tickPosition = int((getTimer() % 1000) / framePeriod);
if (tickLastPosition != tickPosition)
{
tickLastPosition = tickPosition;
canvas.lock();
canvas.fillRect(canvasClearRect, 0x000000);
render();
canvas.unlock();
}
}
enterFrameHandler()方法处理ENTER_FRAME事件。该代码确定了SWF启动之后经过的秒数,这一数字除以framePeriod,期间游戏设计者想要呈现动画,如果这个值不同于上一次渲染帧的事件,清除画布上的内容,动画被重新渲染。/**
* Render any bitmap data.
*/
private function render():void
{
rect.x = (currentTile % 5) * 40;
rect.y = int(currentTile / 5) * 40;
collectorX += (destX-collectorX-20)/5;
collectorY += (destY-collectorY-30)/5;
canvas.copyPixels(spritesheet, rect,
new Point(collectorX, collectorY), null, null, true);
currentTile = ++currentTile % 20;
}
/**
* Used to move the animation around.
*/
private function mouseUpHandler(event:MouseEvent):void
{
destX = event.stageX;
destY = event.stageY;
}
}
mouseUpHandler()方法存储了鼠标点击处的x和y坐标值作为目标地址。之后的render()方法确定了一个在collector与目标位置之间非线性运动,记录点击的全局坐标作为新位置,然后将它提供给copyPixels()方法作为blitting的位置。/**
* Create a gel
*/
private function createGel():void
{
var gel:Object = new Object();
gel.posX = ((Math.random() * 0xffffff) % 280) + 20
gel.posY = 0;
gel.state = "animate";
gel.meltFrame = 0;
gel.name = "gel" + gelCount++;
gels[gel.name] = gel;
}
凝胶的逻辑与渲染状态/**
* Render any bitmap data.
*/
private function render():void
{
rect.x = (currentTile % 5) * 40;
rect.y = int(currentTile / 5) * 40;
collectorX += (destX-collectorX-20)/5;
collectorY += (destY-collectorY-30)/5;
canvas.copyPixels(spritesheetCollector, rect,
new Point(collectorX, collectorY), null, null, true);
// Render Gel at half the frame rate, to slow it down
if (currentTile % 2 == 1)
{
rect.x = ((currentTile-1) % 5) * 40;
rect.y = int((currentTile-1) / 5) * 40;
}
for each (var gel:Object in gels)
{
// Hit Check 5 px within Y and X
if (Math.abs(gel.posY - collectorY + 6) < 14
&& Math.abs(gel.posX - collectorX) < 10)
{
gel.state = "melt";
}
if (gel.state == "melt")
{
// Clear out if done melting
if (gel.meltFrame < 20)
gel.meltFrame++;
else
{
delete gels[gel.name];
continue;
}
rect.x = (gel.meltFrame % 5) * 40;
rect.y = int(gel.meltFrame / 5) * 40;
canvas.copyPixels(spritesheetGelMelt, rect, new Point(collectorX-1, collectorY-12), null, null, true);
continue;
}
else
{
canvas.copyPixels(spritesheetGel, rect, new Point(gel.posX, gel.posY), null, null, true);
}
gel.posY += 3;
if (gel.posY > 320)
{
delete gels[gel.name];
continue;
}
}
currentTile = ++currentTile % 20;
}
凝胶动画是collector速度的一半,通过为奇数帧重置rect值为currentTile-1。接下来,在屏幕上代码循环所有彩色凝胶并检测 collector碰撞。如果发生碰撞它会更改状态为“melt”。在这种状态下,render()用彩色凝胶熔解sprite sheet并且其meltFrame总数为20帧时移除。当凝胶与collector的x和y位置发生碰撞时,会出现溶解动画,只要凝胶在移动就会紧随 collector。如果没有发生碰撞,凝胶向下移动3像素,当它的y坐标超出320时将会从舞台上移除。正如你所看到的,利用blitting你必须处理所有动画的逻辑。
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 705as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 860//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 1067华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1560还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 1025AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1496在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1126大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 934AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 1055先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 1002想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 859使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1694一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 972VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1319最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 864作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 754Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 912因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1387二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 950什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1497Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
利用AS3块传输技术呈现游戏元素:许多类型的游戏,用户体验都依赖于终端可拥有的屏幕像素和移动物体有多快。当让大量的DisplayObject对象动起来时,如MovieClip或Sprite对象,Adobe Flash Player可能在表现上会大大...
10. AS3中的XMLSchema验证:虽然AS3不直接支持XML Schema验证,但可以借助服务器端或第三方库进行XML文档的结构验证。 这份XML帮助手册详细介绍了ActionScript 3.0中XML的使用方法和技巧,对于AS3开发者来说,是一...
在构建网站时,Flash AS(ActionScript)曾是一种流行的手段,用于...这种技术虽然现在已被更现代的Web技术(如HTML5和CSS3)所取代,但在过去的网络环境中,Flash AS为网站设计带来了丰富的动态效果和创新的互动体验。
在本项目中,AS3的主要作用是读取XML文件并处理数据,然后将其呈现在Flash舞台上。具体操作可能包括: 1. 加载XML:使用`XMLLoader`类或者`URLLoader`类加载XML文件,如`news_list.xml`。 2. 解析XML:加载完成后,...
系统中的每一个部分都为多媒体的处理、存储、传输和呈现提供了必要的支持。 最后,本章还探讨了多媒体技术的应用与发展。从历史上的重要多媒体计算机系统说起,到多媒体技术在教育、娱乐、商业等不同领域的广泛运用...
- **用户界面**:使用Adobe Flash或Flex开发,运行于Flash Player、AIR或Flash Lite 3之上,负责呈现UI元素,如播放控制按钮。 - **ActionScript代码**:客户端的逻辑处理和与服务器的通信通过ActionScript实现。FMS...
XML,全称Extensible Markup Language,是一种用于标记数据的、自描述性的、灵活的文本格式。...XML的标准化和普遍接受性使其成为了信息技术领域的一个基石,对于学习和理解ISAS的学生来说,掌握XML的使用至关重要。
1. **痕量元素污染**:痕量元素,如Pb、Cr、As等有毒金属元素,由于不易降解,可以通过大气远距离传输并在积雪中积累,对环境和人体健康造成负面影响。这些元素主要来源于自然贡献和人类活动排放,特别是工业革命...
XML的出现解决了这个问题,它提供了一种简单的方式来描述数据,关注数据本身以及数据的组织方式,而非数据的外观呈现。 XML的一个核心特点就是其可扩展性。与HTML不同,XML文档中的标签并非预定义的,而是由用户...
标题中的“通过xml生成flash报表”指的是使用XML数据文件来驱动Adobe Flash(通常使用ActionScript 3,AS3)创建动态、交互式的报表和图表。Flash报表是一种视觉上吸引人的方式,可以有效地展示复杂的数据,而XML...
XML,全称为Extensible Markup Language,是一种可扩展的标记语言,旨在传输和存储结构化数据。它允许用户自定义标签和属性,以适应各种领域和应用场景的需求。XML的设计目标是促进数据的互操作性和自我描述性,使得...
在IT行业中,多媒体元素的展示和交互经常需要用到各种播放器技术。本文将深入探讨"flash+xml简约的mp3播放器flash素材"这一主题,它是一款基于Flash和XML技术的MP3播放器,专为实现简单音乐播放而设计。尽管这款...
Filter主要分为三类:Source Filter(源过滤器)用于引入数据,Transform Filter(变换过滤器)处理数据,Renderer Filter(渲染过滤器)将数据呈现给用户。这些Filter通过Pin连接形成数据处理的链条。 **...
元素是XML的基本构建块,它们通过标签来定义,如 `<element>` 和 `</element>`。属性则附加在元素上,提供额外的信息,例如 `<element attr="value">`。在WinForms应用程序中,我们需要解析这些XML文件,以便将数据...
源码通常包括ActionScript文件,如在提供的文件列表中出现的`Mp3View.as`、`Mp3Model.as`和`Mp3Persenter.as`,它们可能分别代表视图、模型和呈现者(MVP模式)三个层面上的代码,这是一种常见的软件设计模式,用于...
- **前端展示层**:负责呈现视频列表、播放界面以及用户交互元素,通常采用HTML、CSS和JavaScript等前端技术实现。 - **后端服务层**:主要负责处理用户的请求,包括视频检索、播放控制等功能,通常使用ASP来开发。 ...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,而HTML(HyperText Markup Language)则是用于创建网页内容的主要标记语言。本项目"xml-as-dynamic-html-table"专注于将XML...
Flash是一种广泛应用于网页设计、动画制作、游戏开发的平台,尤其在早期互联网时代,它在创建丰富的媒体内容方面起着重要作用。而XML则是一种数据存储和交换的标准,用于结构化数据的组织和传输。 【描述】:...
在SIMATIC PCS7的界面中,你会看到相关的编译选项,选择相应的AS-OS连接,这是将程序和配置信息从AS传输到OS的关键步骤。 在编译过程中,系统会执行多个任务。包括更新变量,这是将控制逻辑中的变量映射到OS中,...
在IT行业中,XML(eXtensible Markup Language)是一种被广泛用于存储和传输数据的标记语言,因其结构清晰、易于解析而备受青睐。本案例中,“读取xml配置文件的导航flash动画”是一个利用Flash技术实现的交互式导航...