Sprite、MovicClip、Shape的区别

本文详细解析了Sprite、MovieClip与Shape类在Flash中的应用与区别,包括它们的功能、继承关系及内存消耗等方面,特别是它们在是否拥有时间轴、是否支持鼠标点击事件以及如何使用绘图功能等方面的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看下帮助文档的介绍:

Sprite:

包 flash.display
类 public class Sprite
继承 Sprite → DisplayObjectContainer → InteractiveObject → DisplayObject → EventDispatcher → Object
子类 FLVPlayback, FLVPlaybackCaptioning, MovieClip, UIComponentSprite 类是基本显示列表构造块:一个可显示图形并且也可包含子项的显示列表节点。
Sprite 对象与影片剪辑类似,但没有时间轴。 Sprite 是不需要时间轴的对象的相应基类。 例如,Sprite 将是通常不使用时间轴的用户界面 (UI) 组件的逻辑基类。

Sprite 类是 ActionScript 3.0 中新引入的类。它提供了 MovieClip 类功能的替代功能,此替代功能保留了 ActionScript 以前版本的所有功能以提供向后兼容性。

MovieClip:

包 flash.display
类 public dynamic class MovieClip
继承 MovieClip → Sprite → DisplayObjectContainer → InteractiveObject → DisplayObject → EventDispatcher → Object
子类 LivePreviewParent
MovieClip 类从以下类继承而来:Sprite、DisplayObjectContainer、InteractiveObject、DisplayObject 和 EventDispatcher。

不同于 Sprite 对象,MovieClip 对象拥有一个时间轴。

MovieClip 类的方法提供的功能与定位影片剪辑的动作所提供的功能相同。 还有一些其它方法在 Flash 创作工具的“动作”面板中的“动作”工具箱中没有等效动作。

如果修改包含补间动画的 MovieClip 对象的下列任一属性,Flash Player 便会停止该 MovieClip 对象中的播放头:alpha、blendMode、filters、height、opaqueBackground、rotation、scaleX、scaleY、scale9Grid、scrollRect、transform、visible、width、x 或 y。 但是,它不会停止在该 MovieClip 对象的任何子 MovieClip 对象中的播放头。

Shape:

包 flash.display
类 public class Shape
继承 Shape → DisplayObject → EventDispatcher → Object
通过 ActionScript 绘图应用程序编程接口 (API),可使用 Shape 类创建简单形状。 Shape 类包括 graphics 属性,该属性使您可以从 Graphics 类访问方法。

Sprite 类也包括 graphics 属性,并且它包括不可用于 Shape 类的其它功能。 例如,Sprite 对象是显示对象容器,而 Shape 对象不是(并且不能包含子显示对象)。 由于此原因,Shape 对象会比包含相同图形的 Sprite 对象消耗的内存少。 但是,Sprite 对象支持鼠标单击事件,而 Shape 对象不支持。

从中我们可以看出3者的区别如下:

1.MovieClip是动态类,Sprite和 Shape不是。

2.Sprite没有时间轴,MoveiClip有时间轴。

3.Sprite是容器,而Shape不是,Sprite和MovieClip支持鼠标点击事件,Shape对象不支持。

4.Sprite中也含有Graphic对象,这意味着,它也可以直接在其中代码绘图,MovieClip和Shape没有。

转自:http://hi.baidu.com/%C7%A7%C0%EF%C6%AE%D2%BB/blog/item/9077132f1753e6331f308914.html 谢谢
### 关于 Unity SpriteShape 的介绍 `SpriteShape` 是 Unity 提供的一个用于创建和编辑 2D 形状的功能模块,它允许开发者轻松构建复杂的 2D 路径、曲线和其他图形结构。相比于传统的 `Sprite`,`SpriteShape` 更适合动态生成的内容,比如河流、道路或其他需要平滑过渡的路径。 以下是关于 `SpriteShape` 的一些核心概念及其用法: #### 创建 SpriteShape 对象 要使用 `SpriteShape`,可以右键点击场景视图中的空白区域,选择 **2D Object > Sprite Shape** 来创建一个新的 `SpriteShapeController` 对象[^1]。这个对象包含了控制形状的核心逻辑。 #### 主要组件说明 - **SpriteShapeController**: 这是管理整个形状的主要组件。它可以定义路径上的点、线段样式以及其他视觉效果。 - **LineRenderer**: 如果熟悉 `LineRenderer`,会发现 `SpriteShape` 实际上是对它的扩展,提供了更强大的功能来处理复杂路径。 - **Collider 和 Renderer**: 可以为每一段路径分配独立的碰撞器或渲染器,从而实现更加精细的行为控制[^5]。 #### 编辑路径 在进入编辑模式后(双击 `SpriteShapeController`),可以通过拖拽节点调整路径的位置与曲率。还可以添加新的锚点或者删除现有锚点以改变整体形态。此外,还支持设置不同的宽度变化规则以及颜色渐变效果[^2]。 #### 设置材质与贴图 为了使生成的形状看起来更具吸引力,可以在 Inspector 面板中指定相应的 Material 和 Texture 属性。这些资源决定了最终呈现出来的外观风格,例如草地边缘、水流表面等自然现象模拟都可以借助合适的素材完成[^3]。 ```csharp // 示例代码:程序化修改 SpriteShape 参数 using UnityEngine; using UnityEngine.Sprites; public class Example : MonoBehaviour { void Start() { var shape = GetComponent<SpriteShapeController>(); // 获取轮廓数据 var outline = shape.spline.GetOutline(0); // 添加新顶点到路径末端 Vector2 position = new Vector2(outline.vertices[outline.vertices.Length - 1].position.x + 1f, 0f); shape.spline.InsertPointAt(shape.spline.pointCount, position); // 更新最后一个点的颜色 Color color = Color.red; shape.spline.SetColor(shape.spline.pointCount - 1, color); } } ``` 上述脚本展示了如何通过编程方式向现有的 SpriteShape 中追加额外的几何信息并更改其显示特性[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值