`
zccst
  • 浏览: 3319734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

显示对象 DisplayObject

阅读更多
作者: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,编译并测试,你会在浏览器中看到如下图效果。


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    [心得] AS3)灰化显示对象(DisplayObject)的方法 / 图片灰化

    在ActionScript 3 (AS3)中,灰化图片或显示对象是一种常见的视觉效果,它可以使图像看起来像是黑白照片,增强了界面的美学效果或者用于创建某种特定的视觉体验。在这个心得分享中,我们将探讨如何实现AS3中的灰度...

    基于C++ 设计的捕鱼游戏

    显示对象DisplayObject.h的封装 精灵对象sprite.h的封装 场景类action.h的封装 计时器对象ticker.h的封装 窗口对象DemoApp.h的说明 消息映射和流程触发结构 createBefore.h 子弹对象bullet.h的封装 鱼类fish.h的封装...

    AS3_显示对象结构图.pdf

    * DisplayObject:是 AS3 中最基本的显示对象,定义了基本的显示行为。 * InteractiveObject:是 AS3 中的一个交互对象,定义了基本的交互行为。 * Sprite:是 AS3 中的一个 sprite 对象,定义了基本的 sprite 行为...

    AS显示编程PPT学习教案.pptx

    每个显示对象都是DisplayObject类的实例或其子类。DisplayObject类提供了许多通用属性和方法,如位置(x, y)、尺寸(width, height)、缩放(scaleX, scaleY)、旋转(rotation)、透明度(alpha)和可见性(visible)等,这些...

    AS显示编程PPT课件.pptx

    在AS3.0中,所有的显示对象都继承自DisplayObject类。DisplayObject类提供了众多属性和方法,定义了显示对象的基本特征和行为,例如位置、大小、透明度等。DisplayObject类包含了25个属性,6个方法和6个事件。其中,...

    QT+Halcon显示3D对象

    【QT+Halcon显示3D对象】:在计算机视觉领域,Halcon是一种强大的机器视觉软件,而QT则是一个跨平台的开发框架,常用于构建用户界面。将Halcon的3D对象在QT环境中显示,是将这两者的功能相结合,以实现更加直观、...

    Actionscript3.0基础语法

    首先,我们要了解ActionScript 3.0中的显示对象(DisplayObject)体系。DisplayObject 类是所有可显示元素的基类,包括交互对象和非交互对象。交互对象是能够响应用户交互的类,如点击或鼠标悬停,而不能交互对象则...

    BitmapData.draw方法

    这个方法允许开发者将一个显示对象(如Sprite、MovieClip或Bitmap)的可视内容复制到BitmapData对象上,从而实现位图的绘制、复制、修改等一系列操作。在深入探讨BitmapData.draw之前,我们先了解一下BitmapData和...

    pixi-mousewheel:pixi.js插件,可在显示对象上启用鼠标滚轮事件

    pixi.js的此插件会自动为pixi显示对象调度鼠标滚轮滚动事件。 它仅针对具有交互性并设置了特殊标志的对象触发事件。 当滚动所述显示对象时,默认文档滚动被阻止。 此外,它还标准化了鼠标滚轮增量,以实现跨浏览器的...

    xrope:原生 as3 显示对象的简单布局库

    Xrope:用于原生 as3 显示对象的简单布局库。 特征 对于原生 as3 显示对象。 没有 Flex 或任何其他依赖项。 AtomLayout 使用getBounds()对齐 DisplayObject。 不用担心FLA 中的注册点。 (将useBounds设置为true ,...

    flash学习笔记(一些常用方法的例子)

    在Flash AS3编程中,`DisplayObject` 类是所有可显示对象的基础,包括图形、按钮、文本字段等。这个类提供了许多核心功能,允许开发者控制这些对象在舞台上的位置、大小以及与其他对象的交互。以下是关于`...

    flash对象类模块.rar

    这些类包括DisplayObject(显示对象)类,如Sprite和MovieClip,以及EventDispatcher(事件调度器)类,它们使得Flash能够处理用户交互和事件处理。 在易语言的环境中,我们可以通过源码来理解和实现Flash对象类...

    flash高级显示API

    显示对象(DisplayObject)** - **舞台(Stage)**:这是所有可见元素的根容器,是默认的显示对象。 - **自定义显示对象**:除了舞台之外,开发者还可以创建自定义的显示对象,如`Sprite`、`MovieClip`、`...

    Egret引擎开发指南之视觉编程

    Egret的所有显示对象都基于DisplayObject类进行封装,DisplayObject是所有显示对象的基类。容器类,如Sprite或MovieClip,继承自DisplayObjectContainer,它们能够包含其他显示对象。非容器对象,如Bitmap或...

    FLEX中显示类型为BMP的图片

    5. **添加到显示列表**:最后,我们将Bitmap对象添加到DisplayObject容器(如Sprite或MovieClip)的子级列表中,或者直接添加到Stage上,以使其可见。 在实现过程中,需要注意的是BMP格式的一些特殊性,比如颜色...

    开发Flash网络游戏需要掌握的技术

    DisplayObject是所有可显示对象的基类,而DisplayObjectContainer是包含其他DisplayObject的对象,具备容器属性。Shape、Sprite、MovieClip和Bitmap是基本的可显示对象,分别用于绘制矢量图形、组合多个对象、创建...

    图片Flash显示代码

    接下来,我们需要在舞台上放置一个MovieClip或Sprite,这两个都是Flash中的显示对象,可以包含视觉内容和ActionScript代码。选择所需的对象类型后,从库中拖拽图片到舞台上,然后将其链接到符号(Symbol)。这一步将...

    AS3.0 制作的公式显示模块

    打开这个FLA文件,我们可以看到时间轴上的动作脚本以及可能的图形对象,这些都是构建公式显示模块的基础。 总结起来,使用AS3.0创建公式显示模块需要掌握图形渲染、公式解析、LaTeX支持、位图缓存、用户交互、布局...

    flash 碰撞检测hittest

    `hitTest`方法在ActionScript 3(AS3)中扮演着至关重要的角色,用于检测两个显示对象是否在视觉上重叠。本篇文章将深入探讨`hitTest`方法的使用、原理及其在实际项目中的应用。 一、`hitTest`方法概述 `hitTest`...

Global site tag (gtag.js) - Google Analytics