作者:zccst
显示对象 DisplayObject
DisplayObject类是所有显示对象的父类,该类归纳总结了一些显示对象共有的特性,这些共有的特性被整理成为一些列的属性与方法。
1,显示对象的基本概念
(1)属性
上面四幅图中中展示了显示对象中比较基础也是很常用的可视属性,下面列表是显示对象的全部可视属性。
alpha:透明度
width:宽度 height:高度
x:X轴坐标值 y:Y轴坐标值
rotation:旋转角度
scaleX:横向缩放
scaleY:纵向缩放
skewX:横向斜切
skewY:纵向斜切
visible:是否可见
此外,还有锚点的位置属性
anchorX 对象沿x方向的对齐
anchorY 对象沿y方向的对齐
取值范围是0.0-1.0.其中0.0表示从对象的最左对齐,0.5表示从对象的中间对齐,1.0表示从对象的最右对齐
例如:
var textContainer:egret.Sprite = new egret.Sprite();
textContainer.anchorX = textContainer.anchorY = 0.5;
一篇文章:http://coronalabs.com/blog/2013/10/15/tutorial-anchor-points-in-graphics-2-0/
(2)方法
2,Egret中的显示对象类DisplayObject拥有四个派生类,分别为:Bitmap、Shape、TextField、TextInput 这四个派生类实现了不同的功能
Bitmap进行位图显示和操作,可以在位图纹理部分查阅相关技术细节。
Shape是可以进行矢量图绘制的显示对象,可以在适量绘图部分查阅相关技术细节。
TextField 和 TextInput都属于文本操作,可以在文本部分查阅相关技术细节。
3,遮罩是游戏中非常常用的一种视觉处理手段。例如,游戏中滚动的玩家列表就使用了遮罩这一技术。所谓遮罩就是指定一个显示对象哪些部分可以显示,哪些部分不可以显示。
Egret启用遮罩功能非常的简单,在DisplayObject中,我们暴露了一个名称为 mask 的属性,该属性就是用来指定遮罩部分的。
下面一个示例中绘制了两个Shape对象,我们对其中一个Shape使用遮罩,另外一个Shape当做参考。
//绘制了一个矢量图,矩形,( 0,0,100,100)
11 var shp:egret.Shape = new egret.Shape();
12 shp.graphics.beginFill( 0xff0000 );
13 shp.graphics.drawRect( 0,0,100,100);
14 shp.graphics.endFill();
15 this.addChild( shp );
//给改矩形添加了一个遮罩,遮罩也是一个对象
1 var rect:egret.Rectangle = new egret.Rectangle(20,20,30,50);//api中的矩形类,直接初始化
2 shp.mask = rect;
4,碰撞检测在游戏中是非常重要的功能,例如我们制作一款打飞机游戏,当子弹与飞机发生碰撞的时候我们可以认为游戏结束。此时碰撞的过程需要进行碰撞检测操作。
在Egret中,我们提供了碰撞检测的功能,同时该功能提供两种不同的碰撞检测方式。
第一种检测方法:检测图与点是否碰撞
shp.hitTestPoint( 10, 10 );
{
this.drawText();
12
13 var shp:egret.Shape = new egret.Shape();
14 shp.graphics.beginFill( 0xff0000 );
15 shp.graphics.drawRect( 0,0,100,100);
16 shp.graphics.endFill();
17 shp.width = 100;
18 shp.height = 100;
19 this.addChild( shp );
20 //检测shp这个矢量图,与点(10,10)是否有交集
21 var isHit:boolean = shp.hitTestPoint( 10, 10 );
//更新infoText的值
22 this.infoText.text = "碰撞结果" + isHit;
23
24 }
25 //定义一个变量infoText,用来显示文本信息
26 private infoText:egret.TextField;
27 private drawText()
28 {
29 this.infoText = new egret.TextField();
30 this.infoText.y = 200;
31 this.infoText.text = "碰撞结果";
32 this.addChild( this.infoText );
33 }
第二种检测方法:但如果我们想更加精确的检测图像是否与一个点发生了碰撞,我们需要将第三个参数设置为 true。
shp.hitTestPoint( 10, 10 );
1 var shp:egret.Shape = new egret.Shape();
2 shp.graphics.beginFill( 0xff0000 );
3 shp.graphics.drawRect( 0,0,100,100);
4 shp.graphics.endFill();
5 shp.width = 100;
6 shp.height = 100;
7 this.addChild( shp );
8
9 var isHit:boolean = shp.hitTestPoint( 10, 10, true );
10 this.infoText.text = "碰撞结果" + isHit;
我们稍微修改一下代码,将原来宽高为100的正方形修改为一个半径为20的圆形。代码如下:
1 var shp:egret.Shape = new egret.Shape();
2 shp.graphics.beginFill( 0xff0000 );
3 shp.graphics.drawCircle( 0, 0, 20);//注意坐标,可见区域只有四分之一圆
4 shp.graphics.endFill();
5 shp.width = 100; //有什么用呢
6 shp.height = 100;//有什么用呢
7 this.addChild( shp );
8
9 var isHit:boolean = shp.hitTestPoint( 25, 25, true );
10 this.infoText.text = "碰撞结果" + isHit;
5,创建自己的显示对象类
自定义显示对象类需要继承自DisplayObject的具体子类,例如Shape或者TextField。
下面我们来创建一个自己的显示对象。我们把这个显示对象称之为 MyGrid 。
创建一个名称为 MyGrid 的类,并且继承自 Shape 。具体代码如下:
1 class MyGrid extends egret.Shape
2 {
3 public constructor()
4 {
5 super();
6 this.drawGrid();
7 }
8
9 private drawGrid()
10 {
11 this.graphics.beginFill( 0x0000ff );
12 this.graphics.drawRect( 0, 0, 50,50 ); //矩形1
13 this.graphics.drawRect( 50, 50, 50, 50);//矩形4
14 this.graphics.beginFill( 0xff0000 );
15 this.graphics.drawRect( 50, 0, 50,50 );//矩形2
16 this.graphics.drawRect( 0, 50, 50,50 );//矩形3
17 this.graphics.endFill();
18 }
19 }
在 MyGrid 我们绘制了一个红蓝相间的2*2格子,然后我们创建一个新的文档类,名称为 GridMain ,在文档类中创建并显示我们的 MyGrid,具体代码如下:
1 class GridMain extends egret.DisplayObjectContainer
2 {
3 public constructor()
4 {
5 super();
6 this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
7 }
8
9 private onAddToStage(event:egret.Event)
10 {
11 var _myGrid:MyGrid = new MyGrid();
12 this.addChild( _myGrid );
13 }
14 }
编写保存后,在 egretProperties.json 文件中将文档类改为 GridMain,编译并测试,你会在浏览器中看到如下图效果。
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
相关推荐
在ActionScript 3 (AS3)中,灰化图片或显示对象是一种常见的视觉效果,它可以使图像看起来像是黑白照片,增强了界面的美学效果或者用于创建某种特定的视觉体验。在这个心得分享中,我们将探讨如何实现AS3中的灰度...
显示对象DisplayObject.h的封装 精灵对象sprite.h的封装 场景类action.h的封装 计时器对象ticker.h的封装 窗口对象DemoApp.h的说明 消息映射和流程触发结构 createBefore.h 子弹对象bullet.h的封装 鱼类fish.h的封装...
* DisplayObject:是 AS3 中最基本的显示对象,定义了基本的显示行为。 * InteractiveObject:是 AS3 中的一个交互对象,定义了基本的交互行为。 * Sprite:是 AS3 中的一个 sprite 对象,定义了基本的 sprite 行为...
每个显示对象都是DisplayObject类的实例或其子类。DisplayObject类提供了许多通用属性和方法,如位置(x, y)、尺寸(width, height)、缩放(scaleX, scaleY)、旋转(rotation)、透明度(alpha)和可见性(visible)等,这些...
在AS3.0中,所有的显示对象都继承自DisplayObject类。DisplayObject类提供了众多属性和方法,定义了显示对象的基本特征和行为,例如位置、大小、透明度等。DisplayObject类包含了25个属性,6个方法和6个事件。其中,...
【QT+Halcon显示3D对象】:在计算机视觉领域,Halcon是一种强大的机器视觉软件,而QT则是一个跨平台的开发框架,常用于构建用户界面。将Halcon的3D对象在QT环境中显示,是将这两者的功能相结合,以实现更加直观、...
首先,我们要了解ActionScript 3.0中的显示对象(DisplayObject)体系。DisplayObject 类是所有可显示元素的基类,包括交互对象和非交互对象。交互对象是能够响应用户交互的类,如点击或鼠标悬停,而不能交互对象则...
这个方法允许开发者将一个显示对象(如Sprite、MovieClip或Bitmap)的可视内容复制到BitmapData对象上,从而实现位图的绘制、复制、修改等一系列操作。在深入探讨BitmapData.draw之前,我们先了解一下BitmapData和...
pixi.js的此插件会自动为pixi显示对象调度鼠标滚轮滚动事件。 它仅针对具有交互性并设置了特殊标志的对象触发事件。 当滚动所述显示对象时,默认文档滚动被阻止。 此外,它还标准化了鼠标滚轮增量,以实现跨浏览器的...
Xrope:用于原生 as3 显示对象的简单布局库。 特征 对于原生 as3 显示对象。 没有 Flex 或任何其他依赖项。 AtomLayout 使用getBounds()对齐 DisplayObject。 不用担心FLA 中的注册点。 (将useBounds设置为true ,...
在Flash AS3编程中,`DisplayObject` 类是所有可显示对象的基础,包括图形、按钮、文本字段等。这个类提供了许多核心功能,允许开发者控制这些对象在舞台上的位置、大小以及与其他对象的交互。以下是关于`...
这些类包括DisplayObject(显示对象)类,如Sprite和MovieClip,以及EventDispatcher(事件调度器)类,它们使得Flash能够处理用户交互和事件处理。 在易语言的环境中,我们可以通过源码来理解和实现Flash对象类...
显示对象(DisplayObject)** - **舞台(Stage)**:这是所有可见元素的根容器,是默认的显示对象。 - **自定义显示对象**:除了舞台之外,开发者还可以创建自定义的显示对象,如`Sprite`、`MovieClip`、`...
Egret的所有显示对象都基于DisplayObject类进行封装,DisplayObject是所有显示对象的基类。容器类,如Sprite或MovieClip,继承自DisplayObjectContainer,它们能够包含其他显示对象。非容器对象,如Bitmap或...
5. **添加到显示列表**:最后,我们将Bitmap对象添加到DisplayObject容器(如Sprite或MovieClip)的子级列表中,或者直接添加到Stage上,以使其可见。 在实现过程中,需要注意的是BMP格式的一些特殊性,比如颜色...
DisplayObject是所有可显示对象的基类,而DisplayObjectContainer是包含其他DisplayObject的对象,具备容器属性。Shape、Sprite、MovieClip和Bitmap是基本的可显示对象,分别用于绘制矢量图形、组合多个对象、创建...
接下来,我们需要在舞台上放置一个MovieClip或Sprite,这两个都是Flash中的显示对象,可以包含视觉内容和ActionScript代码。选择所需的对象类型后,从库中拖拽图片到舞台上,然后将其链接到符号(Symbol)。这一步将...
打开这个FLA文件,我们可以看到时间轴上的动作脚本以及可能的图形对象,这些都是构建公式显示模块的基础。 总结起来,使用AS3.0创建公式显示模块需要掌握图形渲染、公式解析、LaTeX支持、位图缓存、用户交互、布局...
`hitTest`方法在ActionScript 3(AS3)中扮演着至关重要的角色,用于检测两个显示对象是否在视觉上重叠。本篇文章将深入探讨`hitTest`方法的使用、原理及其在实际项目中的应用。 一、`hitTest`方法概述 `hitTest`...