- 浏览: 95122 次
- 性别:
- 来自: 上海
文章分类
最新评论
flash player10提供了对3D的支持,虽然功能不够强大,但是有些功能还是很不错的,下面是用10写的一个翻牌游戏。
public class Card extends Sprite
{
[Embed(source='../../../lib/goodbyewow02.jpg')]
private var FrontFace:Class;
[Embed(source='../../../lib/goodbyewow04.jpg')]
private var BackFace:Class;
private var fFace:Sprite;
private var bFace:Sprite;
private var cleanObj:Sprite;
private var dirtyObj:Sprite;
public function Card()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var frontBg:DisplayObject = new FrontFace();
var backBg:DisplayObject = new BackFace();
frontBg.x = backBg.x = - frontBg.width / 2; frontBg.y = backBg.y = - frontBg.height / 2; fFace = new Sprite();
bFace = new Sprite();
fFace.addChild(frontBg);
bFace.addChild(backBg);
//背面需要额外处理一下,
//翻转过来,并且暂时隐藏
bFace.scaleX *= -1;
bFace.visible = false;
bFace.buttonMode = fFace.buttonMode = true;
//测试的文字
var testTF:TextField = new TextField();
testTF.width = 400;
testTF.height = 200;
testTF.textColor = 0xFFFFFF;
testTF.htmlText = "我的文字描述"; testTF.appendText(testTF.text);
testTF.selectable = true;
testTF.multiline = true;
testTF.wordWrap = true;
testTF.x = frontBg.x + 10;
testTF.y = frontBg.y + 200;
testTF.type = TextFieldType.INPUT;
fFace.addChild(testTF);
cleanObj = new Sprite();
dirtyObj = new Sprite();
dirtyObj.addChild(fFace);
dirtyObj.addChild(bFace);
addChild(dirtyObj);
addChild(cleanObj);
addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(e:MouseEvent = null):void
{
// 修改文字时不动
if (e.target is TextField) return;
if (e.target == fFace || e.target.parent == fFace)
{
// flip to back
dirty();
TweenLite.killTweensOf(dirtyObj); TweenLite.to( dirtyObj, 1, {
rotationY:180,ease: Back.easeOut,
onComplete: cleanBackFace,
onUpdate: update} );
} else if (e.target == bFace || e.target.parent == bFace) {
dirty();
TweenLite.killTweensOf(dirtyObj);
TweenLite.to( dirtyObj, 1, {
rotationY:0,
ease: Back.easeOut,
onComplete: cleanFrontFace,
onUpdate: update
} );
}
}
private function update():void
{
bFace.visible = dirtyObj.rotationY > 90 && dirtyObj.rotationY < 270;
fFace.visible = !bFace.visible;
}
private function cleanFrontFace():void
{
if (dirtyObj.contains(fFace))
{
dirtyObj.removeChild(fFace); cleanObj.addChild(fFace);
}
}
private function cleanBackFace():void
{
if (dirtyObj.contains(bFace))
{ dirtyObj.removeChild(bFace);
cleanObj.addChild(bFace);
bFace.scaleX *= -1;
}
}
private function dirty():void
{
if (cleanObj.contains(fFace) || cleanObj.contains(bFace))
{
var face:DisplayObject = cleanObj.getChildAt(0);
cleanObj.removeChild(face);
dirtyObj.addChild(face);
if (face == fFace)
{
dirtyObj.swapChildren(face, bFace);
} else {
bFace.scaleX *= -1;
}
}
}
}
同时如果在mc中有动态文本,和图片,哪么在选择rotationY后,就会变的模糊,解决的办法是在他停止的时候删除后在重新添加。
http://www.webdesign-cn.com
http://www.levs.cn
public class Card extends Sprite
{
[Embed(source='../../../lib/goodbyewow02.jpg')]
private var FrontFace:Class;
[Embed(source='../../../lib/goodbyewow04.jpg')]
private var BackFace:Class;
private var fFace:Sprite;
private var bFace:Sprite;
private var cleanObj:Sprite;
private var dirtyObj:Sprite;
public function Card()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var frontBg:DisplayObject = new FrontFace();
var backBg:DisplayObject = new BackFace();
frontBg.x = backBg.x = - frontBg.width / 2; frontBg.y = backBg.y = - frontBg.height / 2; fFace = new Sprite();
bFace = new Sprite();
fFace.addChild(frontBg);
bFace.addChild(backBg);
//背面需要额外处理一下,
//翻转过来,并且暂时隐藏
bFace.scaleX *= -1;
bFace.visible = false;
bFace.buttonMode = fFace.buttonMode = true;
//测试的文字
var testTF:TextField = new TextField();
testTF.width = 400;
testTF.height = 200;
testTF.textColor = 0xFFFFFF;
testTF.htmlText = "我的文字描述"; testTF.appendText(testTF.text);
testTF.selectable = true;
testTF.multiline = true;
testTF.wordWrap = true;
testTF.x = frontBg.x + 10;
testTF.y = frontBg.y + 200;
testTF.type = TextFieldType.INPUT;
fFace.addChild(testTF);
cleanObj = new Sprite();
dirtyObj = new Sprite();
dirtyObj.addChild(fFace);
dirtyObj.addChild(bFace);
addChild(dirtyObj);
addChild(cleanObj);
addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(e:MouseEvent = null):void
{
// 修改文字时不动
if (e.target is TextField) return;
if (e.target == fFace || e.target.parent == fFace)
{
// flip to back
dirty();
TweenLite.killTweensOf(dirtyObj); TweenLite.to( dirtyObj, 1, {
rotationY:180,ease: Back.easeOut,
onComplete: cleanBackFace,
onUpdate: update} );
} else if (e.target == bFace || e.target.parent == bFace) {
dirty();
TweenLite.killTweensOf(dirtyObj);
TweenLite.to( dirtyObj, 1, {
rotationY:0,
ease: Back.easeOut,
onComplete: cleanFrontFace,
onUpdate: update
} );
}
}
private function update():void
{
bFace.visible = dirtyObj.rotationY > 90 && dirtyObj.rotationY < 270;
fFace.visible = !bFace.visible;
}
private function cleanFrontFace():void
{
if (dirtyObj.contains(fFace))
{
dirtyObj.removeChild(fFace); cleanObj.addChild(fFace);
}
}
private function cleanBackFace():void
{
if (dirtyObj.contains(bFace))
{ dirtyObj.removeChild(bFace);
cleanObj.addChild(bFace);
bFace.scaleX *= -1;
}
}
private function dirty():void
{
if (cleanObj.contains(fFace) || cleanObj.contains(bFace))
{
var face:DisplayObject = cleanObj.getChildAt(0);
cleanObj.removeChild(face);
dirtyObj.addChild(face);
if (face == fFace)
{
dirtyObj.swapChildren(face, bFace);
} else {
bFace.scaleX *= -1;
}
}
}
}
同时如果在mc中有动态文本,和图片,哪么在选择rotationY后,就会变的模糊,解决的办法是在他停止的时候删除后在重新添加。
http://www.webdesign-cn.com
http://www.levs.cn
发表评论
-
Android游戏开发
2011-07-01 15:26 196Android开发中Activity是个 -
Flash WebGame 开发经验心得和PureMVC框架细说
2011-06-28 14:02 1550→前端的主程序架构和模块划分与人手和人事分工是紧密联系在一起的 ... -
Flash中的深度排序
2011-06-28 11:34 1275As for Multiplayer Games and Vi ... -
Flex 中的callback
2011-06-28 11:16 964Flash支持传递函数做完参数传递。 下面是主函数中的方法 ... -
常用flash引擎和框架
2011-06-27 11:08 2986官方在线帮助(没标英文的都是中文) 用于 Adobe Flas ... -
原来flash player对图片的解码不是异步的,AIR2.6后就异步了
2011-06-27 10:53 851用过 Loader 对象的人都知道,加载图片时,无论是使用 l ... -
Flash WebGame 开发经验心得和PureMVC框架细说
2011-06-27 10:32 1067→前端的主程序架构和模块划分与人手和人事分工是紧密联系在一起的 ... -
简要评说Adobe的FlashPlayer的渲染算法
2011-06-27 10:22 1025前些时候看到CSDN上一篇文章介绍FlashPlayer的渲染 ... -
游戏中的智能寻路
2011-05-22 18:20 1269近年来,游戏产业的快 ... -
as3中ProgressEvent的bytesTotal始终为0
2011-05-16 09:50 1515as3中ProgressEvent的bytesTotal始终为 ... -
使用URI-Style Namespace编译ActionScript/Flex Library
2011-05-12 11:10 819当你开发了一个有着多个Pacakge的类库,并在MXML中使用 ... -
环境贴图
2011-03-29 10:49 1096教程:实时环境映射贴图技术实时环境映射贴图技术(Real-ti ... -
Python之旅
2010-12-09 19:40 948一直用AS3+Red5做一些小游戏,感觉挺方便的,特别在做上下 ... -
red5的常用方法
2010-12-03 10:11 977在使用red5+flash做rpg游戏开发的时候有些功能是需要 ... -
PV3d性能优化
2010-11-25 14:19 1346当你优化你的程序时, ... -
PV3D处理3D矢量绘图与3D文本
2010-08-23 11:46 1161Papervision3D主要以位图为 ... -
Flash中矢量和位图的使用
2010-06-09 16:47 890最近在做一个世界地图的Flash,其中导入一个很大的矢量图形, ... -
flex 3 + .net开发flash Remoting四[完整代码
2010-03-02 20:49 761一. 相关说明: 本 ... -
关于PV3D常用材质的讨论
2009-12-17 14:05 1113PV3D中的贴图材质有很多。 颜色材质Co ... -
AS3中的loading与stage
2009-12-16 13:53 1009在AS3中如果用loading在主flash中是不能使用sta ...
相关推荐
PV3D通过利用硬件加速,提高了在Flash Player中的3D性能。 在"flash as3 pv3d实现的魔方效果源文件"中,我们重点关注的核心技术有: 1. **3D对象建模**:魔方是由多个立方体组成的,每个立方体在3D空间中都有自己...
在本文中,我们将深入探讨如何使用Flash MX创建一个旋转立方体的特效,这是一个经典而引人入胜的动画效果,可以展示对3D图形的理解和编程技巧。Flash MX是Adobe Flash的一个版本,它允许开发者创建交互式矢量图形、...
在本文中,我们将深入探讨如何使用ActionScript 2.0(AS2.0)在Flash中创建3D旋转文字效果。ActionScript是Adobe Flash中用于交互性和动画的主要编程语言,而AS2.0版本是在Flash MX 2004及后续版本中广泛使用的。 ...
4. **显示对象的3D属性**:Flash中的DisplayObject类及其子类支持3D属性,如`x`, `y`, `z`坐标,以及`rotationX`, `rotationY`, `rotationZ`旋转角度,这些在源文件中会被充分利用。 5. **时间轴控制**:Flash的...
ActionScript 3是Flash Player支持的脚本语言,相较于之前的版本,AS3具有更严格的类型检查、更高的性能以及更好的面向对象编程特性。在这个项目中,开发者通过AS3编写代码,实现了图片的三维展示效果,这包括图片的...
5. 编写旋转动画:使用ActionScript编写控制3D对象旋转的代码,可能涉及到旋转轴(rotationX、rotationY、rotationZ)和旋转速度等参数。 6. 更新和渲染:每当动画帧变化时,更新3D场景,并使用Stage3D API进行渲染...
在IT行业中,Flash 3D是一种使用Adobe Flash技术实现三维图形和动画的方法。这个实例主要讲解如何使用Flash来加载外部的3D场景文件,从而在Web浏览器中展示丰富的3D内容。这一技术对于早期互联网上的交互式多媒体...
在Flash中,通过ActionScript(AS)编程语言可以实现物体的动态旋转,这通常涉及到使用`rotationX`、`rotationY`和`rotationZ`属性来改变对象的旋转角度。同时,为了实现立体感,可能使用了多视角图像或者3D建模技术...
ActionScript 3是Adobe Flash Professional和Flash Player支持的一种编程语言,它以其强大的性能和面向对象的特性,为开发人员提供了丰富的功能。在AS3中实现3D效果,主要是通过Stage3D API来完成的。Stage3D是Flash...
1. **Flex框架**:Flex是由Adobe公司开发的开源框架,基于ActionScript 3.0和Flash Player或Adobe AIR运行时环境。它提供了丰富的组件库,用于创建交互式、动态的Web应用,支持XML、CSS、AS3等技术。 2. **Flex布局...
`player.transform.localEulerAngles.y`获取当前Y轴旋转值,然后减去1,最后通过`player.transform.localEulerAngles`设置新的旋转值。 2. 上侧旋转: 对于上侧旋转,代码首先尝试增加`rotationX`,但注意到这部分...
接下来,我们将深入分析如何使用Kotlin来实现布局的翻转效果。 首先,我们需要了解翻转动画的基本原理。这种动画通常是通过改变视图的透视角度来模拟3D空间中的翻转,通常涉及到视图的旋转和平移。在Android中,...
1. **Spark组件**:Spark是Adobe Flex中的一个UI组件集,相比Flash Player时代的MX组件,Spark组件更注重性能和可定制性。在Spark组件中实现3D旋转,需要利用其强大的渲染引擎和事件处理机制。 2. **3D旋转原理**:...
AS3是Adobe Flash平台的主要编程语言,它为创建动态内容提供了强大的功能。让我们一起研究如何在AS3中实现这种引人注目的翻牌特效。 翻牌特效的基本概念是模拟卡片或牌子翻转的过程,通常通过动画来呈现,给人一种...
在3D图形编程领域,PaperVision3D是一个广泛使用的开源ActionScript库,它允许开发者在Adobe Flash Player中创建丰富的3D交互式体验。本篇主要探讨的是PaperVision3D中的坐标系统,它是理解3D场景构建的基础。 首先...
Minko3D是一个开源的2D和3D图形渲染引擎,基于Adobe Flash Player和HTML5的WebGL技术。它提供了一套完整的工具和API,用于创建交互式3D应用程序。在这个特定的例子中,我们将使用Minko3D来创建一个3D游戏场景,并在...
this.rotationY = rotationY; invalidate(); } } ``` 在这个例子中,我们创建了一个自定义的CardView,并在`onDraw()`方法中应用了3D旋转。通过调用`setRotationX()`和`setRotationY()`方法,我们可以动态地改变...
3D旋转动画在Android中可以通过多种方式实现,比如使用`Animation`类、`ObjectAnimator`、`PropertyAnimator`,或者是自定义View。下面将详细介绍这些实现方法: 1. **使用Animation类** Android的基础动画库提供...
app:contentPadding="10dp"> android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" /> ``` 然后,我们可以使用视图转换动画...
源码分析和工具的使用是这个话题的核心,我们将深入研究如何通过自定义View或者使用现有库来实现这一功能。 首先,我们要理解Android中的View翻转基本概念。在Android中,我们可以利用`setRotationX()`和`...