- 浏览: 716636 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (389)
- flex (150)
- java (55)
- flex_sharedObject (4)
- iphone/android (7)
- red5 (4)
- blazeds (19)
- ajax (3)
- flex&java (9)
- 聊天室 (2)
- flex的问题 (1)
- game (8)
- flex_xml (1)
- flex组件学习 (2)
- JGroups (1)
- 中转站 (2)
- ruby (7)
- flex_js (5)
- C/C++ (14)
- perl (2)
- db (13)
- air (10)
- hibernate (8)
- flash_flex_as_3d (2)
- struts (4)
- dwr (8)
- freemarker (2)
- AS (22)
- 工具 (6)
- js_jquery_ext_yui (4)
- .net (1)
- C# (1)
- 前端 (1)
最新评论
-
136900923:
您好,您的代码我不是很懂,我想跟您交流一下,我的qq邮箱:13 ...
hibernate做无限极菜单树如此简单 -
fykyx521:
两个同一个功能
flex_flush_Socket 安全沙箱解决 -
ustb:
你上下两个代码类之间没关系
flex_flush_Socket 安全沙箱解决 -
u010656335:
...
flex发送QQ表情 -
u010656335:
flex发送QQ表情
转自:http://blog.sina.com.cn/s/blog_629045ef0100f7ld.html
看到标题也许非常多数学不好或中学时上课打盹的朋友会感到反感,但放心的是在这里的Matrix已简化了非常多琐碎的步骤,也不用大家拿一张纸拼命的做计算。对想制作游戏的朋友也是必学的路程,所以大致上明白了运用的思路就能说掌控了技巧。
在字典中的说明不够充分让大家去理解,所以开始还是要重复说明一下。Matrix矩阵就像个数组,排列方式是以列和行组成。在flash 8中所提供的是3 x 3矩阵,3x3的矩阵能定义出一个3D计算,但在Flash 8中只供2D的计算,即 x 和 y 的计算,那么我们来看看这个矩阵的定义
以上的每个字母都有各自的运用意义,分别是:
a = 控制 X 的宽度
b = 控制 Y 的倾斜
c = 控制 X 的倾斜
d = 控制 Y 的高度
tx = 控制 X 坐标位置
ty = 控制 Y 坐标位置
接下来就是怎么在Matrix函数中定义,其实非常简单。首先汇入 Matrix 的封包,然后就能开始定义
import flash.geom.Matrix; //导入类包
var myMatrix:Matrix = new Matrix(a, b, c, d, tx, ty); //开始定义Matrix类
当中的a, b, c, d, tx, ty能直接定义。再来我们把这段引入例子,以证实及帮助了解以上各个参数的运用。
步骤1:在场景上建立一个MC,即画个方形后按F8选择MovieClip(影片),定义实例名为mc
步骤2:到场景第一帧开始我们的代码
Matrix 必须配合 Transform 才能实现出所定义的效果,不多说了开始看看代码吧
import flash.geom.Matrix; //导入Matrix 类包
import flash.geom.Transform; //到入Transform类包
var myMatrix:Matrix = new Matrix(1,0,0,1,100,100); //参数定义为宽度比例为1,无所有的倾斜,高度比例1,xy坐标为100
var myTransform:Transform = new Transform(mc); //Transform对象为场景上的mc
myTransform.matrix = myMatrix; //赋予transform的matrix函数为我们所定的myMatrix类
那么接下来测试就能看到结果了,看不出什么效果??那么我来换换Matrix的参数值成
var myMatrix:Matrix = new Matrix(1,1,0,1,100,100); //第二参数改为1
这样测试是不是就看到我们的b影响了mc的形状呢??Matrix的运用就是这样,非常简单吧??所以非常多东西不要以为非常困难,其实都非常简单。
再来我们要深入一点,去了解Matrix的计算,知其一不知其二也是无法正确掌控好运用的。Matrix的计算其实非常简单,就只有两行的公式:
X’ = a*X + c*Y + tx;
Y’ = b*X + d*Y + ty;
意思就是
新坐标X = a * 现有X坐标 + c * 现有Y坐标 + 常量tx;
新坐标Y =b * 现有X坐标 +d * 现有Y坐标 + 常量ty;
我们把这个例子代入公式中
a = 2, b = 0, c = 0, d = 1, tx = 0, ty = 0
X’ = 2x + 0y + 0;
Y’ = 0x + 1y + 0;
X’ = 2x;
Y’ = y;
能知道下一个新的X值会是目前X的两倍,而Y保持不变,在一开始已说了a的变化会影响宽度,那么出来的形状就是宽度为现有的两倍了。
在Matrix中更有几个基本函数能控制,所以也能不用一直重新定义Matrix类,那就是
Matrix.scale(a,d);
Matrix.translate(tx1, ty2); //这里的tx1和ty1是所要递增或递减原有tx和ty的数值
Matrix.rotate(弧度); //弧度就是 (角度/ 180)* Math.PI
基本上只要代入公式就能得到答案,所以我只说明rotate函数的计算
Math.rotate((50/180)*Math.PI) //这里是需求旋转 50 度
公式为:
X’ = cos(a)*X + sin(c)*Y + tx;
Y’ = -sin(b)*X + cos(d)*Y + ty;
X’ = cos(50)*X + sin(50)*Y + tx;
Y’ = -sin(50)*X + cos(50)*Y + ty;
X’ = 0.64*X + 0.76*Y + tx;
Y’ = -0.76*X + 0.64*Y + ty;
得到的这个答案再把现有坐标x和y代入就能求出新坐标了
那么我们来验证a,b,c,d的数值是否正确吧,打开一个新的场景,在帧上输入
import flash.geom.Matrix;
var myMatrix:Matrix = new Matrix();
myMatrix.rotate((50/180)*Math.PI);
trace(myMatrix.toString()); //看看当中的a,b,c,d是不是也是这个数值呢?
好啦。。到了最后的部分也就能完结这篇教程了,最重要的一点也是非常多人百思不解的问题是:
求出一个X和Y,为何会能够让元件转动呢?这只是个坐标啊??最多也只是控制坐标点,怎么那么神奇??
这点就是Flash提供的方便了,其实为何需要配合Transform的关键就是在此,Transform指定了元件之后会得到4个角的坐标。所以我们使用Transform.matrix函数就是让transform把Matrix的公式代入每个角的坐标。
所以公式中的x和y就是每个角的坐标,坐标代入公式就直接取得了新的坐标值而达到旋转变形等的功能。这是不是简单化了非常多呢??总比在之前版本还要自己定义函数。
发表评论
-
转深入理解Flash的沙箱 – Security Domains
2014-01-22 09:35 837一篇很经典的进阶文章,国外牛人的分享,清晰明了,图文并茂,适 ... -
[IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
2010-11-19 14:04 2385转自:http://www.xintend.com/Artic ... -
as3_Matrix3d
2010-09-10 15:45 2328Matrix3D 类使用一个 4x4 正方形矩阵,即一个由 ... -
flash安全沙箱_解决测试时安全沙箱的问题
2010-07-18 18:15 1206自己测试的swf 老报安全沙箱 以前看到帖子 设置一个安全文件 ... -
flashlog.txt配置
2010-04-08 15:34 2499本工具特点:1、简单又 ... -
flex as3 元数据标签综合
2010-01-04 13:50 1336http://www.cnblogs.com/chocol ... -
Flex实际复杂项目中RSL(运行时共享库)的使用方法
2010-01-04 13:37 2716http://flash.9ria.com/thread-42 ... -
AS3 event flow 事件冒泡机制 以及 stopImmediatePropagation() stopPropagation()用法
2009-12-28 19:03 3212http://yzzelliot.spaces.live. ... -
event.preventDefault() 取消事件的默认行为
2009-12-28 18:53 6062http://blog.csdn.net/xiang08/ar ... -
gTween:轻便的as3缓动类库分享
2009-12-25 13:25 2245前不久做一个作品,想加入一些复杂点的缓动效果,想到gTween ... -
AS3应用程序模块化开发与ApplicationDomain
2009-12-25 13:22 2740AS3应用程序模块化开发 ... -
用Flex的编译参数实现AS3程序的自身预加载(Self Preloading)
2009-12-17 19:03 1803http://www.riaidea.com/blog/arc ... -
as3运行时加载字体
2009-12-16 11:20 1681http://nochump.com/blog/?p=20。还 ... -
minibuilder 启动命令
2009-12-03 03:50 704http://code.google.com/p/minibu ... -
AS3 Alert
2009-12-02 16:37 1524package { import flash.displ ... -
最新火爆游戏巨献——谈Flash Player的安全机制
2009-11-23 16:30 723最新火爆游戏巨献——谈Flash Player的安全机制 ... -
as3编译器错误中文说明
2009-11-19 13:38 1259http://www.eb163.com/club/threa ... -
aswing进度条改变显示进度条方式
2009-11-11 16:53 1024package org.aswing.plaf.basic.b ... -
aswing布局管理器
2009-11-11 02:23 1841http://hereson.iteye.com/blog/1 ... -
as绘制渐变颜色皮肤
2009-11-10 13:57 918这段代码画了一个球型 var myMatrix:Matrix ...
相关推荐
- **线性矩阵不等式(Linear Matrix Inequalities, LMIs)**:一类数学约束条件,常用于优化和控制系统设计中。 #### 结论 通过将抓取分析中的三个关键问题转化为LMI问题,并利用现有的高效算法求解,不仅简化了问题...
这可能会涉及到Matrix对象的使用,Matrix对象是AS3中用于二维几何变换的关键组件。此外,还可能涉及到事件监听器和交互控件的设计,以使用户能够通过界面与变形的图像进行交互。 总的来说,这个源代码包提供了一套...
`ColorMatrixFilter`是AS3中`flash.filters`包的一部分,它接受一个16个元素的数组作为输入,即一个5x4的矩阵。这个矩阵决定了像素如何被转换。默认情况下,这个矩阵是单位矩阵,意味着它不会对图像产生任何影响。当...
在matrix_rotation库中,我们可能会找到以下核心功能: 1. **旋转函数**:库可能包含一个或多个函数,用于根据指定的角度(可能是弧度或度数)对二维数组或矩阵进行旋转。这些函数可能会接受一个二维矩阵和旋转角度...
在Flash AS(ActionScript)开发中,图像截取是一项常用的功能,它允许用户从屏幕上选取特定的区域并保存为图像。这个"flash-as图像截取"的项目是关于如何使用AS来实现这样的功能。下面我们将深入探讨这个话题,以及...
在Flex环境中,我们可以使用AS3(ActionScript 3)来实现这一功能,AS3提供了强大的图形和矩阵运算支持。 为了实现鼠标滚动时的缩放效果,我们需要监听鼠标的`scroll`事件。在Flex应用中,我们可以为舞台或者特定的...
以下是一个示例函数,用于找到矩阵中的最大值和最小值: ```vb Function FindMinMax(matrix() As Double, ByVal rows As Integer, ByVal cols As Integer) As Variant Dim minValue As Double, maxValue As Double...
3. **3D变换**:为了实现旋转效果,我们需要应用矩阵变换,如`rotationMatrix`,这可以通过`Matrix`类在Android中完成。通过不断改变旋转角度,我们可以模拟旋转木马的连续旋转。 4. **动画**:旋转木马的自动旋转...
3. **剔除错误匹配**:由于图像噪声和光照变化,匹配的点对中可能会存在错误匹配。使用RANSAC(随机样本一致)算法可以剔除这些异常值,提高匹配的准确性。 4. **计算基础矩阵**:利用匹配后的对应点对,可以使用...
from pyrr import Vector3, Matrix44 # 创建向量和旋转角度 vector = Vector3([1, 0, 0]) angle = 45 # 创建旋转矩阵 rotation_matrix = Matrix44.from_eulerXYZ((angle, 0, 0)) # 旋转向量 rotated_vector = ...
安装完成后,在VB6中打开或创建一个新的工程,然后通过"工程"菜单选择"引用",在弹出的对话框中找到并勾选"MatrixVB Control",这样就成功引入了MatrixVB控件。 2. **创建MatrixVB对象** 在VB6代码中,我们需要...
测量平差是测绘学中的一个关键概念,它涉及到大量数据的处理和分析,矩阵求逆在此过程中扮演着至关重要的角色,因为矩阵的逆运算能够解决线性方程组,从而找到未知量的精确值。 矩阵求逆的概念是线性代数的基础,一...
本篇文章将探讨如何利用Python找到矩阵中的局部极大值。局部极大值是指在一个元素周围,其值大于邻近元素的值,这通常涉及到图像处理、模式识别和多变量优化等问题。 首先,我们需要了解矩阵的概念。在Python中,...
- **使用着色器**:详细解释如何在AS3中调用PixelBender着色器,以及如何将处理结果应用到显示对象上。 #### 第16章 使用影片剪辑 影片剪辑是Flash和AS3中的一个重要组成部分,用于组织和控制动画序列。 - **影片...
总之,VB.NET中的Data Matrix条码生成与读取涉及选择合适的库、理解和使用API接口,以及可能的图像处理。通过这个实例,你可以学习到如何将这些概念整合到实际项目中,实现高效、可靠的条码系统。
在解压后,开发者通常会找到一个或多个.as文件(ActionScript源代码),一个.xml文件(图片数据),以及可能的一些图像资源文件(如.jpg或.png)。开发者需要将这些文件部署到合适的服务器目录,然后通过HTML和...
查阅资料的过程中找到了一个极其简单的解决方式,也学到了不少东西。先把代码给出。 import numpy as np # A = np.mat('1 2 3;2 -1 1;3 0 -1') A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]]) b = np.array([9...
例如,矩阵 \(\begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}\) 可以表示为二维空间中的一种线性变换,这种变换可以改变向量的方向和长度。 #### 5. 矩阵的线性组合 最后,笔记强调了矩阵的线性组合的重要性。...
3. 图像配准:将多张图片对齐,以便进行比较或融合,可以利用仿射变换找到最佳匹配。 仿射算法的实现通常涉及以下几个步骤: 1. 确定控制点:选取至少三个在源坐标系和目标坐标系中对应的点,这些点的坐标我们知道...
在本示例中,我们将讨论如何使用Python构建一个简单的电影推荐系统。推荐系统是一种人工智能技术,用于根据用户的个人喜好和行为模式自动推荐相关产品或服务。在这个案例中,我们将专注于电影推荐,但这些概念可以...