5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:西安
性别:先生
最后登录:2014-09-24
http://dzxz.5d.cn/
学习编程纯属业余爱好,但时间久了,或多或少就有了一点点的经验和心得。接触 Flash 程序设计是从2005年的10月以后才开始的,在学习Flash的过程中得到了 闪客启航UC聊天室 很多朋友和老师的非常大的帮助,这对我的学习的方向也产生了较大的影响。 目前对游戏设计、课件制作有较浓厚的兴趣,在博客中写了一些这方面的分析文章,与大家一起分享编程的快乐,并且希望我的课件设计方面的讨论对教师朋友能有所帮助。
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/07/09 | 动态注册点类的使用方法与实例
类别(Flash课件设计)
|
评论
(1)
|
阅读(302)
|
发表于 18:00
昨天帮网友做一个课件,突然发现自己不会写旋转的函数了,写了半天的效果还是不大对劲,后来想起来自己有一个动态注册点的例子,拿来应用一下不是很好吗,与是有了下面的短文。
设定动态注册点的方法与应用
MC 的旋转操作是以注册点为旋转中心的,而MC 只有一个唯一的注册点,因此,当旋转中心不是这个注册点时,就需要计算出注册点的下一个位置,以及MC 在下一位置时的旋转角度,这样的计算通常都是很麻烦的,现在国外的闪客已经提供了一个类,利用这个类可以动态的指定注册点,也就是说动态的指定旋转中心,大大的简化的细节上的运算。现在把这个类的使用方法介绍一下:
首先,将类文件与你的fla 文件放在相同的目录下,打开fla 文件,在库中找到需要旋转的mc ,点右键选择链接,选择为AS 导出,选择第一帧导出,类名称写入DynamicRegistration ,确定之后,类与mc 已经链接好了。
该类有一个方法 setRegistration(x,y); 一个属性 _rotation2 ;利用前者指定一个注册点(该点必须使用mc 内部的坐标来表示), _rotation2 用来表示mc 总的旋转角度。
将mc 内部的位置点通过localToGlobal 函数转换为全局位置后,可以同鼠标进行比较,从而得到总的旋转角,也就是 _rotation2 的值。
在下面的例子中,点击其中一个球,mc 将以另一个球作为旋转中心,计算角度的函数atan 和atan2 功能是相同的,看个喜好来使用吧。
rota_mc.pt_a_mc.onPress = function() {
rota_mc.setRegistration(rota_mc.pt_b_mc._x, rota_mc.pt_b_mc._y);
var pt:Object = new Object();
onEnterFrame = function () {
pt.x = rota_mc.pt_b_mc._x;
pt.y = rota_mc.pt_b_mc._y;
rota_mc.localToGlobal(pt);
var angle = atan2_angle(_root._xmouse, _root._ymouse, pt.x, pt.y);
rota_mc._rotation2 = angle - 180;
};
};
rota_mc.pt_a_mc.onRelease = function() {
delete _root.onEnterFrame;
};
rota_mc.pt_a_mc.onReleaseOutside = function() {
delete _root.onEnterFrame;
};
rota_mc.pt_b_mc.onPress = function() {
rota_mc.setRegistration(rota_mc.pt_a_mc._x, rota_mc.pt_a_mc._y);
var pt:Object = new Object();
onEnterFrame = function () {
pt.x = rota_mc.pt_a_mc._x;
pt.y = rota_mc.pt_a_mc._y;
rota_mc.localToGlobal(pt);
var angle = atan2_angle(_root._xmouse, _root._ymouse, pt.x, pt.y);
rota_mc._rotation2 = angle;
};
};
rota_mc.pt_b_mc.onRelease = function() {
delete _root.onEnterFrame;
};
rota_mc.pt_b_mc.onReleaseOutside = function() {
delete _root.onEnterFrame;
};
function atan_angle(x1, y1, x2, y2) {
// x1,y1: first point
// x2,y2: center point
var dx = x1 - x2;
var dy = y1 - y2;
var p = Math.atan(dy / dx) * 180 / 3.141593;
var rota = dx > 0 ? p : (180 + p);
return rota;
}
function atan2_angle(x1, y1, x2, y2) {
// x1,y1: first point
// x2,y2: center point
var dx = x1 - x2;
var dy = y1 - y2;
var p = Math.atan2(dy, dx) * 180 / Math.PI;
return p;
}
Flash 动画
:
0
评论
Comments
日志分类
首页
[295]
Flash游戏教程
[33]
Flash与飞行程序设计
[10]
Flash课件设计
[62]
Flash学习笔记
[74]
家住西安
[47]
编程资源
[69]