- 浏览: 42125 次
- 性别:
- 来自: 上海
最新评论
一直知道在flash.geos包里面有一个Rectangle对象却很少用过,无意中试用了一下发现可用的地方还很广。所以一冲动把现在的项目中的很多地方都改成了Rectangle判断了。
[1b]应用一:屏幕滚屏[/1b]
滚屏是游戏中最常做的一项工作,一般的思路是map.x++ map.y++,然后随时判断map是否走到了头。下面的代码中我用了一张4000*4000的图片来说明两种方式:
一般的做法如下:判断每一步是否超过边界如果超过边界则等于边界。
var map:Loader=new Loader(); //地图容器
var speed:int=7; //移动速度
map.load (new URLRequest("2.jpg"));
map.contentLoaderInfo.addEventListener (Event.COMPLETE,oncomplete);
addChild (map);
function oncomplete (evt:Event)
{
stage.addEventListener (KeyboardEvent.KEY_DOWN,onkeydown);
}
function onkeydown2(evt:KeyboardEvent)
{
switch (evt.keyCode)
{
case Keyboard.LEFT :
if (map.x+7stage.stageWidth-map.width) map.x-=7;
else map.x=stage.stageWidth-map.width
break;
case Keyboard.UP :
if (map.y+7stage.stageHeight-map.height) map.y-=7;
else map.y=stage.stageHeight-map.height
break;
}
}
使用Rectangle的方法,见如下代码:
var map:Loader=new Loader(); //地图容器
var rec:Rectangle; //当前显示区域的范围
var maxRec:Rectangle; //地图的矩形范围
var speed:int=7;
map.load (new URLRequest("2.jpg"));
map.contentLoaderInfo.addEventListener (Event.COMPLETE,oncomplete);
addChild (map);
function oncomplete (evt:Event)
{
maxRec=map.getBounds(map);//以自己的坐标系返回矩形
rec=new Rectangle(0,0,800,600);//显示的范围
map.scrollRect=rec;//确定地图的可显示范围
stage.addEventListener (KeyboardEvent.KEY_DOWN,onkeydown);
}
function onkeydown (evt:KeyboardEvent)
{
rec=map.scrollRect;
switch (evt.keyCode)
{
case Keyboard.LEFT :
rec.x-=7;
break;
case Keyboard.RIGHT :
rec.x+=7;
break;
case Keyboard.UP :
rec.y-=7;
break;
case Keyboard.DOWN :
rec.y+=7;
break;
}
if(rec.xmaxRec.width-rec.width) rec.x=maxRec.width-rec.width;
if(rec.ymaxRec.height-rec.height) rec.y=maxRec.height-rec.height;
//if(maxRec.containsRect(rec)) 如果你无需十分精确可以关闭以上4行,把这一句打开
map.scrollRect=rec;
}
两种方式的比较:效率上相差不大,不过使用Rectangel的好处是利用显示对象的scrollRect属性可以把区域之外的内容不显示出来。
注意事项:scrollRect的增量方向正好与物体的相反,可以想象为一个是移动物体,一个是移动屏幕。
[1b]应用二:找出屏幕外围的显示对象。[/1b]
基本思路:将Rectangle对象的坐标系设置为屏幕坐标系,利用DisplayObject.getBounds(stage)返回其他物体在屏幕坐标系中的位置,然后利用Rectangle对象的相交测试方法检测(有点类似于碰撞检测)
以下是一个例子:
var rec:Rectangle = new Rectangle(0, 0, ShareData.SCENEWIDTH, ShareData.SCENEHEIGHT);
for (var i = 0; i
总结:虽然并没有测试这样所带来的效率,但是会有很多地方可以为我们的判断带来很大的方便。
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/4590.html
发表评论
-
使用 Flash Remoting in Flash Forms 制作 Live Search
2010-04-10 10:01 610即时搜索效果察看 Live Search 的程式分成两部份 ... -
Remoting中接受query类型数据方法
2010-04-10 10:00 532var listInfo = new Array() fun ... -
Remoting中接受query类型数据方法
2010-04-10 10:00 525var listInfo = new Array() fun ... -
Flash remoting参数传递与调用补充
2010-04-10 10:00 577续flash remoting中参数传递与调用,补充其他数据类 ... -
Flash remoting参数传递与调用补充
2010-04-10 10:00 665续flash remoting中参数传递与调用,补充其他数据类 ... -
Flex2/AS3在Linux下的开发环境
2010-04-09 12:58 510这次修正了万恶的“Incorrect flash playe ... -
flash AS3的面向对象特点概述
2010-04-09 12:58 866本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实 ... -
flash AS3的面向对象特点概述
2010-04-09 12:58 754本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实 ... -
从AS1和AS2到AS3的观念转变
2010-04-09 12:57 672[1b]AS1/2-AS3观念的转变(Meet with n ... -
从AS1和AS2到AS3的观念转变
2010-04-09 12:57 565[1b]AS1/2-AS3观念的转变(Meet with n ... -
as3打造一个非常酷的莲花曲线效果
2010-04-09 10:04 713详细代码: var radius:int=100; va ... -
AS3.0 单一职责原则设计模式
2010-04-09 10:04 715呵呵,好久没写了。因为前段时间心情不是很好,并且各种事情比较多 ... -
AS3.0 单一职责原则设计模式
2010-04-09 10:04 711呵呵,好久没写了。因为前段时间心情不是很好,并且各种事情比较多 ... -
ActionScript 3 开发的需注意的方面
2010-04-09 10:03 567这些东东都不是很难,只是方法不常用或没注意到,以后还会陆续添加 ... -
ActionScript 3 开发的需注意的方面
2010-04-09 10:03 533这些东东都不是很难,只是方法不常用或没注意到,以后还会陆续添加 ... -
《银河动画》鼠绘教程 (1)
2010-04-08 10:22 691本教程是给对flash有基础了解的人看的(最起码你得知道fla ... -
《银河动画》鼠绘教程 (1)
2010-04-08 10:22 574本教程是给对flash有基础了解的人看的(最起码你得知道fla ... -
《银河动画》鼠绘教程 (2)
2010-04-08 10:21 563先画草图!! [url=http://space.flash8 ... -
《银河动画》鼠绘教程 (2)
2010-04-08 10:21 536先画草图!! [url=http://space.flash8 ... -
《银河动画》鼠绘教程 (3)
2010-04-08 10:21 592一般的简单动画都会吧?别告诉我你连物体移动都不会!! ...
相关推荐
本资源包“Flash游戏制作常用代码解析”提供了关于Flash游戏开发中的关键代码片段和常见技术的解析,旨在帮助初学者和有经验的开发者更好地理解和应用这些代码。 1. **基础语法与数据类型**:ActionScript支持基本...
《AS3.0拼图游戏开发详解》 在IT领域,尤其是互动娱乐和教育软件开发中,Flash技术一直扮演着重要角色。...在压缩包“flash 3.0拼图游戏”中,你可以找到源代码和资源,进一步探索和研究AS3.0在拼图游戏开发中的应用。
` - 表示游戏对象是否在游戏中活跃,用于管理对象的生命周期。 5. **碰撞区域(Collision Area)**: `public var collisionArea:Rectangle;` - 定义对象的碰撞边界,用于碰撞检测。 6. **碰撞标识符(Collision ...
通过以上技术的综合运用,《Flash AS3 丛林对打 对战小游戏》为玩家提供了一种独特的娱乐体验,展示了AS3在游戏开发中的强大潜力。无论是新手还是经验丰富的开发者,都能从中学习到很多实用的游戏编程技巧。
这款游戏源码的分析与学习,对于了解AS3语言在游戏开发中的应用具有重要的实践意义。 首先,ActionScript 3是Adobe Flash Professional和Flash Player支持的一种面向对象的编程语言,它是Flash内容创作的主要工具。...
在Flash游戏开发中,人物走动与场景自动滚屏是两个关键的技术点,尤其是在2D横版卷轴游戏中。本文将深入探讨如何使用ActionScript 3.0(AS3.0)来实现这一功能。 首先,我们要理解AS3.0的基础。ActionScript是一种...
本项目——“三角也疯狂”,就是一个基于ActionScript3.0开发的射击小游戏,展示了ActionScript3.0在游戏开发中的应用。 1. **ActionScript3.0基础知识**: - AS3.0是ActionScript的重大升级,引入了强类型、面向...
在Flash开发中,碰撞检测是实现游戏或者交互式应用中不可或缺的一部分。`hitTest`方法在ActionScript 3(AS3)中扮演着至关重要的角色,用于检测两个显示对象是否在视觉上重叠。本篇文章将深入探讨`hitTest`方法的...
在Flash开发中,ActionScript 3.0(AS3.0)是用于创建交互式内容、游戏和动画的主要编程语言。对于游戏开发来说,碰撞检测是至关重要的一个环节,它决定了游戏对象之间的交互是否准确。本篇文章将详细介绍AS3.0中的...
在Flash CS3中,ActionScript 3.0被引入来支持更高级的面向对象编程特性,这使得开发者能够创建更加复杂、灵活的应用程序。 #### 1. 类与对象 在面向对象编程中,“类”是用于定义对象的蓝图或模板,它定义了对象...
在Flash AS3中,拖动效果是交互设计中常见的功能,它允许用户...这是一种增强用户交互体验的重要技术,广泛应用于各种Web应用和游戏开发中。通过理解并掌握这些基础知识,你可以轻松地创建更多复杂的交互式Flash内容。
在AS3(ActionScript 3)中,碰撞检测是游戏开发和交互式应用程序中的关键部分。这个主题主要涉及如何在舞台上检测两个或多个对象是否发生重叠,这在创建动态内容时尤其重要,比如角色与环境、物体之间的交互。在这...
在网页设计、游戏开发或者应用程序中,动态效果能够增加视觉吸引力,使交互过程更加生动有趣。"Flash拉窗帘动画 幕布拉开特效"就是一个典型的例子,它利用Adobe Flash软件的动画功能,创造出一种幕布缓缓拉开的场景...
在IT领域,摄像头拍照与Flash技术的结合是创建交互式应用程序和在线服务的重要组成部分,尤其在网页设计中。本文将详细探讨"Flash摄像头拍照"这一主题,包括如何使用Flash技术来捕捉摄像头图像,并进行必要的修改。 ...
AS3是Adobe Flash Professional和Flash Builder中的编程语言,以其强大的性能和丰富的功能,广泛应用于网页游戏、互动媒体和动画制作。 消除游戏,如“消消乐”,是一种受欢迎的休闲游戏类型,玩家通过匹配相同元素...
ActionScript 3.0(AS3)是Adobe公司发布的一种强大的编程语言,主要...通过以上知识点的总结,可以看出ActionScript 3.0开发指南几乎涵盖了开发Flash应用程序所需的所有重要方面,是每个Flash开发人员必备的参考书籍。
在Flash AS(ActionScript)开发中,图像合成和裁切是一项关键技能,广泛应用于动态图形设计、游戏开发以及网页互动元素的制作。本项目“flash-as图像合成”提供了一个实现这些功能的实例,包含了必要的源代码和配置...