- 浏览: 122081 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zhouhaiyang88:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
xurichusheng:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
wgcooo:
javax.naming.NameNotFoundExcept ...
ActiveMq-JMS简单实例使用tomcat -
huang-tao:
你好,在吗?请问,我启动Tomcat时报如下错,是什么原因?= ...
ActiveMq-JMS简单实例使用tomcat -
Eric.Yan:
好文章,明天试一试
ActiveMq-JMS简单实例使用tomcat
Flash/Flex学习笔记:3D基础 里已经介绍了3D透视的基本原理,不过如果每次都要利用象该文中那样写一堆代码,估计很多人不喜欢,事实上AS3的DisplayObject类已经内置了z坐标、rotationX、rotationY、rotationZ属性,再加上PerspectiveProjection类用于处理透视转换,基本上可以满足大多数的3D要求。
import
flash.events.Event;
import
flash.display.Sprite;
import
flash.text.TextField;
import
flash.events.MouseEvent;
import
flash.text.TextFieldAutoSize;
var
isAngleChangeing =
false
;
var
txtX:TextField,txtY:TextField,txtZ:TextField,txtPosZ:TextField,txtFieldOfView:TextField,txtInfo:TextField,txtCenter:TextField,txtFocusLength:TextField;
txtX =
new
TextField();
txtX.text =
"rotationX:"
;
txtY =
new
TextField();
txtY.text =
"rotationY:"
;
txtZ =
new
TextField();
txtZ.text =
"rotationZ:"
;
txtPosZ =
new
TextField();
txtPosZ.text =
"Z:"
;
txtFieldOfView =
new
TextField();
txtFieldOfView.text =
"视角:"
;
txtCenter =
new
TextField();
txtCenter.text =
"消失点:"
txtFocusLength =
new
TextField();
txtFocusLength.text =
"焦距:"
;
txtX.y = txtY.y = txtZ.y =
5
;
txtX.x = txtPosZ.x =
10
;
txtPosZ.y = txtX.y +
26
;
txtPosZ.x +=
40
;
txtY.x = txtX.x +
180
;
txtZ.x = txtY.x +
180
;
txtFieldOfView.x = txtPosZ.x +
160
;
txtFieldOfView.y = txtPosZ.y;
txtCenter.x = txtFieldOfView.x +
170
;
txtCenter.y = txtPosZ.y;
txtInfo =
new
TextField();
txtInfo.text=
""
;
txtFocusLength.x = txtX.x +
25
;
txtFocusLength.y = txtPosZ.y +
25
;
var
imgBD:BitmapData =
new
ImgSample();
var
img:Bitmap =
new
Bitmap(imgBD);
trace
(
"img.width="
,img.width,
",img.height="
,img.height);
var
imgSprite:Sprite =
new
Sprite();
img.x = - img.width /
2
;
img.y = - img.height /
2
;
imgSprite.addChild(img);
trace
(
"imgSprite.width="
,imgSprite.width,
",imgSprite.height="
,imgSprite.height);
var
containerSprite:Sprite =
new
Sprite();
containerSprite.addChild(imgSprite);
imgSprite.x = img.width /
2
;
imgSprite.y = img.height /
2
;
addChild(containerSprite);
trace
(
"containerSprite.width="
,containerSprite.width,
",containerSprite.height="
,containerSprite.height);
containerSprite.x = stage.stageWidth /
2
- containerSprite.width /
2
;
containerSprite.y = stage.stageHeight /
2
- containerSprite.height /
2
;
containerSprite.z =
50
;
var
silderX:SimpleSlider =
new
SimpleSlider(
0
,
360
,
0
);
silderX.x = txtX.x +
160
;
silderX.y = txtX.y +
7
;
silderX.rotation =
90
;
var
silderY:SimpleSlider =
new
SimpleSlider(
0
,
360
,
0
);
silderY.x = txtY.x +
160
;
silderY.y = silderX.y;
silderY.rotation =
90
;
var
silderZ:SimpleSlider =
new
SimpleSlider(
0
,
360
,
0
);
silderZ.x = txtZ.x +
160
;
silderZ.y = silderX.y;
silderZ.rotation =
90
;
var
silderPosZ:SimpleSlider =
new
SimpleSlider(-
200
,
200
,
50
);
silderPosZ.x = txtX.x +
160
;
silderPosZ.y = silderX.y +
25
;
silderPosZ.rotation =
90
;
var
silderFieldOfView:SimpleSlider =
new
SimpleSlider(
0.1
,
179.9
,
90
);
silderFieldOfView.x = silderPosZ.x +
180
;
silderFieldOfView.y = silderPosZ.y;
silderFieldOfView.rotation =
90
;
var
silderCenterPos:SimpleSlider =
new
SimpleSlider(
150
,
400
,
275
);
silderCenterPos.x = silderFieldOfView.x +
180
;
silderCenterPos.y = silderPosZ.y;
silderCenterPos.rotation =
90
;
var
silderFocusLength:SimpleSlider =
new
SimpleSlider(
100
,
500
,
300
);
silderFocusLength.x = silderPosZ.x ;
silderFocusLength.y = silderPosZ.y +
25
;
silderFocusLength.rotation =
90
;
addChild(txtX);
addChild(txtY);
addChild(txtZ);
addChild(txtPosZ);
addChild(txtFieldOfView);
addChild(txtInfo);
addChild(txtCenter);
addChild(txtFocusLength);
addChild(silderX);
addChild(silderY);
addChild(silderZ);
addChild(silderPosZ);
addChild(silderFieldOfView);
addChild(silderCenterPos);
addChild(silderFocusLength);
silderX.addEventListener(Event.CHANGE,silderXChangeHandler);
silderY.addEventListener(Event.CHANGE,silderYChangeHandler);
silderZ.addEventListener(Event.CHANGE,silderZChangeHandler);
silderPosZ.addEventListener(Event.CHANGE,silderPosZChangeHandler);
silderFieldOfView.addEventListener(Event.CHANGE,silderFieldOfViewChangeHandler);
silderFieldOfView.addEventListener(MouseEvent.MOUSE_UP,
function
(){isAngleChangeing =
false
});
silderCenterPos.addEventListener(Event.CHANGE,silderCenterPosChangeHandler);
silderFocusLength.addEventListener(Event.CHANGE,silderFocusLengthChangeHandler);
function
showTxtInfo(s:SimpleSlider){
txtInfo.text = s.value.toString().substr(
0
,
5
);
txtInfo.x = mouseX +
20
;
txtInfo.y = s.y +
5
;
}
function
silderXChangeHandler(e:Event):
void
{
imgSprite.rotationX = silderX.value;
showTxtInfo(silderX);
}
function
silderYChangeHandler(e:Event):
void
{
imgSprite.rotationY = silderY.value;
showTxtInfo(silderY);
}
function
silderZChangeHandler(e:Event):
void
{
imgSprite.rotationZ = silderZ.value;
showTxtInfo(silderZ);
}
function
silderPosZChangeHandler(e:Event):
void
{
containerSprite.z = silderPosZ.value;
showTxtInfo(silderPosZ);
}
function
silderFieldOfViewChangeHandler(e:Event):
void
{
doPerspectiveProjection();
showTxtInfo(silderFieldOfView);
isAngleChangeing =
true
;
}
function
silderCenterPosChangeHandler(e:Event):
void
{
doPerspectiveProjection();
showTxtInfo(silderCenterPos);
}
function
silderFocusLengthChangeHandler(e:Event):
void
{
doPerspectiveProjection();
showTxtInfo(silderFocusLength);
}
function
doPerspectiveProjection():
void
{
var
pp:PerspectiveProjection=
new
PerspectiveProjection();
pp.fieldOfView = silderFieldOfView.value;
if
(!isAngleChangeing){
pp.focalLength = silderFocusLength.value;
}
//trace(pp.focalLength);
pp.projectionCenter =
new
Point(silderCenterPos.value,silderCenterPos.value);
containerSprite.transform.perspectiveProjection = pp;
}
doPerspectiveProjection();
var
txtAuthor:TextField =
new
TextField();
txtAuthor.htmlText =
"<a href='http://yjmyzz.cnblogs.com/' target='_blank'>by 菩提树下的杨过</a>"
;
addChild(txtAuthor);
txtAuthor.y = txtFocusLength.y;
txtAuthor.x =
425
;
txtAuthor.autoSize = TextFieldAutoSize.LEFT;
稍加解释:
z坐标:即对象在z轴上的坐标,flash默认采用的是右手三维坐标,也就是说z值越大,物体越小
rotaionX,rotationY,rotationZ:即对象绕着x,y,z轴旋转的角度
PerspectiveProjection对象的三个属性:
1.focalLength 即焦距,使用效果上貌似焦距越大,物体也越大(?跟常规理解的不同),而且据官方帮助上讲:在透视转换过程中,将使用视野的角度和舞台的高宽比(舞台宽度除以舞台高度)来自动计算 focalLength
2.fieldOfView 即观察点的三维"视角"(0到180之间的值),怎么理解我还没想好,不过在使用效果上,如果当物体的z轴坐标不为0时,该值越大,物体的扭曲和形变越夸张,而且动态调整该值时focalLength值也会自动重新计算。(所以如果用代码写死了focalLength,不管如何调整fieldOfView都是看不到效果的)
3.projectionCenter:即3D透视中的消失点,当z轴坐标趋近于无限大时,物体越趋向于该点(消失)。
最后:上面的代码中暗藏了二个小技巧
1.为啥要先把图片放到imgSprite中,然后再将imgSprite又放到containerSprite中?
因为旋转时有一个旋转的中心点,而Flash默认这个中心就是对象的左顶点,即(0,0)位置,用二个sprite嵌套后,再配合坐标的设定,巧妙的将中心点正好移动到了图片中心,如下图:
2.如何用代码从库里取出一张图片?
如上图,关键在于导入图片时要指定“类”名,这样在代码中就可以用
1
var
imgBD:BitmapData =
new
ImgSample();
//从库中取出一张图片
2
var
img:Bitmap =
new
Bitmap(imgBD);
得到一个图片的Bigmap实例
发表评论
-
Flash/Flex学习笔记(50):矩阵变换
2011-04-24 13:52 1162先回顾一下Silvelright中的矩阵变换[转]WPF中的M ... -
Flash/Flex学习笔记(49):背面剔除与 3D 灯光
2011-04-24 13:50 973今天继续:上一回Flash/Flex学习笔记(50):3D线条 ... -
Flash/Flex学习笔记(48):迷你滚动条ScrollBar
2011-04-24 13:46 1062先看最终效果: 整个swf最终不到4k, ... -
Flash/Flex学习笔记(47):利用FMS快速创建一个文本聊天室
2011-04-24 13:45 992先来看客户端fla的构成: 第一帧:登录界面 第一帧的 ... -
Flash/Flex学习笔记(46):使用TweenLite
2011-04-24 13:43 1674TweenLite是第三方出品的专用于各种缓动动画的类库,其性 ... -
Flash/Flex学习笔记(44):3D线条与填充
2011-04-24 13:39 10963D线条:把上一篇中的3D坐标旋转示例稍做修改,用线把各个 ... -
Flash/Flex学习笔记(43):3D基础
2011-04-24 13:34 1143之前我们所做的动画都 ... -
Flash/Flex学习笔记(42):反向运动学(下)
2011-04-24 13:30 916先要复习一下三角函数与余弦定理: 对于直角三角形,三边长 ... -
Flash/Flex学习笔记(41):反向运动学(上)
2011-04-24 13:29 939先回顾上篇所说的"正向运动学":以人行 ... -
Flash/Flex学习笔记(40):正向运动学
2011-04-24 13:27 882所谓"正向运动学"通俗点讲就是把几个连接部 ... -
Flash/Flex学习笔记(39):万有引力与粒子系统
2011-04-24 13:26 723万有引用公式: 其中G为万有引力常数 var numP ... -
Flash/Flex学习笔记(38):动量守恒与能量守恒
2011-04-24 13:24 941动能公式: 动量公式: 动量守恒: 能量守恒: ... -
Flash/Flex学习笔记(37):坐标旋转
2011-04-24 13:23 1018坐标旋转是个啥概念呢? 如上图,(蓝色)小球 绕某一 ... -
Flash/Flex学习笔记(36):碰撞检测
2011-04-24 13:22 606碰撞检测基本上可能分为二类:对象与对象的碰撞检测、对象与点 ... -
Flash/Flex学习笔记(35):弹性运动续--弹簧
2011-04-24 13:21 766上一篇里演示的弹性运动加上摩擦力因素后,物体最终基本上都会比较 ... -
Flash/Flex学习笔记(34):弹性运动
2011-04-24 13:20 771动画中的弹性运动 从视觉效果上接近 物理经典力学中的单摆运 ... -
Flash/Flex学习笔记(33):缓动动画
2011-04-24 13:18 998缓动 与 匀变速 看上去很类似,但其实有区别: 匀变速的 ... -
Flash/Flex学习笔记(32):不用系统组件(纯AS3)的视频播放器--只有8.82K
2011-04-24 13:17 1270以前为了赶项目,利用系统组件制作过一款视频播放器(见Fla ... -
Flash/Flex学习笔记(31):自己动手实现一个滑块控件(JimmySilder)
2011-04-24 13:15 965先看最终的演示: 滑块条的应用实在太广泛了:mp3播放器中声 ... -
Flash/Flex学习笔记(30):如何正确监听Stage对象的事件
2011-04-24 13:13 1294如果想在一个自定义类中注册对stage对象的监听事件,然后在另 ...
相关推荐
flex/Flash开发系列书籍:基于FLASH的WEB3D应用研究
附件是关于 Flash/Flex 几个重要框架 Cairngorm、Mate、PureMVC以及Swiz 的典型例子,由 Tony Hillerson 提供 Homepage: http://insideria.com
在IT行业中,Flash/Flex是一种基于ActionScript编程语言和Adobe Flex框架的开发工具,用于创建交互式的、富媒体的Web应用程序。"Flash/Flex画曲线,绘图板"这个主题涉及的是如何使用这些技术来创建一个允许用户自由...
语言:C ++许可证:BSD-3代码质量:A + https://lgtm.com/projects/g/Genivia/RE-flex/context:cpp文档:https://www.genivia.com/doc/reflex/html /index.html存储库:https://github.com/Genivia/RE-flex更改日志...
在IT行业中,Flash和Flex是曾经非常流行的富互联网应用程序(RIA)开发框架,它们主要用于创建交互式的网页内容和应用程序。本文将重点讲解如何在Flash或Flex项目中利用CSS(层叠样式表)来定义文本样式,提升用户...
**FDT - 一款强大的Flash/Flex开发工具集** FDT(Flash Development Tool)是一款专为Adobe Flash和Flex开发者设计的集成开发环境(IDE),它基于Eclipse平台,提供了高效、专业的开发工具和服务。FDT的出现极大地...
FLEX 安装方法 集成到 eclipse 中 ...* 汉化 FLEX 尤其是 FLEX/AIR 方面的中文资料 * 原创的关于 FLEX 的博客:http://liguoliang.com/ * Adobe 公司 FLEX 主页:http://www.adobe.com/cn/products/flex/
在IT行业中,Flash/Flex是一种广泛使用的开发工具,主要用于创建交互式、富媒体的Web应用程序。Flex是基于ActionScript和MXML的开放源代码框架,它允许开发者构建可自定义的用户界面,而Flash则是其背后的动画和...
标题“Flex:登录”指的是使用Adobe Flex技术实现用户登录功能的一种方法。Flex是Adobe公司推出的一款基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA)。这篇博客文章可能详细介绍了如何在Flex项目...
本教程是作者精心编写的Flex学习资料,适合初学者入门,通过图文并茂的方式,帮助读者快速掌握Flex的基本概念和核心技能。 1. **Flex基础**:Flex提供了MXML和ActionScript两种编程方式。MXML是一种声明式语言,...
在《潮汕IT男》网站的文章《解决flash/flex/as3 访问中文域名时的流错误》中,作者陈林生提供了详细的步骤和代码示例,帮助开发者理解和解决这个问题。文章地址是:[http://chenlinsheng.com/?p=990]...
RTMP(Real-Time Messaging Protocol)...通过学习和理解源代码,你可以深入了解RTMP协议的实现细节,以及FLEX如何与服务器和客户端进行交互。这对于想要从事音视频直播开发的人员来说,是一个宝贵的实践和学习资源。
《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...
基于Flex的网络三维实景模拟技术的研究与实现.kdh
1. **Flex概述**:介绍Flex技术的基本概念,包括它的历史、目标和应用领域,以及它与Flash Player和Adobe AIR的关系。 2. **Flex开发环境**:可能会讲解如何安装和配置Flex Builder或IntelliJ IDEA等开发工具,以及...
总共有4个例子: 1.http://127.0.0.1:8080/flexDemo/HelloWorld/HelloWorld.html ...如果你的数据库配置和我的不一样,请修改flexDemo\WEB-INF\classes\下的DBSetting.properties文件,数据库建表的sql语句是user.sql
Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript 3(AS3)编程语言和MXML标记语言。这些开源项目为开发者提供了丰富的组件库、工具和框架,帮助他们扩展Flex的功能,提高开发效率,并实现...
Flex与Java的交互是跨平台应用开发中的常见技术组合,允许前端用户界面(UI)与后端业务逻辑进行高效沟通。在本文中,我们将深入探讨如何使用Flex 4与Java进行通信,并通过三种不同的方法实现这一目标:RemoteObject...
总结一下,要在Flex 2和Flex 3中实现全屏功能,你需要确保你的开发环境和Flash Player已更新到支持`StageDisplayState`的版本,并正确编写代码以利用这些API。通过以上示例,你可以了解如何在MXML中定义事件监听器和...
### Flex4.6与AS3知识点详解 #### 一、Flex4.6简介与特性 **Flex4.6**作为一款强大的开源框架,主要用于构建跨平台的企业级应用程序、网页游戏、桌面应用及移动应用等。它基于ActionScript 3 (AS3) 开发,为开发者...