请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 12723|回复: 17

[服务器端交互] 注册点的问题,头疼,开始搞了(已解决:AS动态设置注册点) [复制链接]

jevin 楼主

小丑鱼

银牌会员

帖子
1562
体力
5411
威望
0
发表于 2006-9-28 22:08:14 |显示全部楼层
注册点
123
456
789

首先注册点一般只和旋转(自身旋转和饶着一头旋转)是一个十字的点

1注册点只有生成的时候设置吗,一个已生成的MC没办法改吗

2做了一条线的MC当设置注册点是1的时候,是自身旋转的,让设置为4的时候是饶一头旋转的,就是说线的MC只能设置4才可以饶一头旋转吧?

3一个MC如果按下变形有一个空心的圆的那个是什么,应该不是注册点吧,有什么用,好象和缩放有关

4另外有AS可以改注册点吗

还有CTRL T出来的变形菜单旁边有一个信息的点那是哪个点,完全搞昏了

[ 本帖最后由 KingdaSun 于 2006-9-29 13:46 编辑 ]
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-
西部数码顶级域名注册商39元抢注!

黑羽翔天

金牌会员

帖子
450
体力
2731
威望
399
发表于 2006-9-29 08:47:00 |显示全部楼层
1.已生成的MC可以外面再添加一个MC来包装它,这样在生成时就可以改了。已生成的MC修改注册点,可以在编辑时,全选,移动位置即可。

2.看你线和要旋转的方向。水平线,设置4,则以左端为顶点旋转。

3.是的。简单的说控制各方向缩放比例

4.AS不可以修改注册点,但可以动态生成空MC来包装原MC,并通过改变原MC在包装MC中位置达到修改注册点的效果
黑羽翔天◎足下八邦
欢迎来我的博客 :)
www.kingda.org  (AS3教程)
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

帖子
1912
体力
7180
威望
4
居住地
广东省 广州市
发表于 2006-9-29 09:04:43 |显示全部楼层
性别: 保密
体力: 1396
帖子: 244
注册: 2005-9-20

精华贴多的人,体力就是强啊..佩服

使用道具 举报

黑羽翔天

金牌会员

帖子
450
体力
2731
威望
399
发表于 2006-9-29 09:07:51 |显示全部楼层
你体力是我两倍啊。。。
体力强,生活中有用
但不知道在Blueidea上能有什么用处 ;)
黑羽翔天◎足下八邦
欢迎来我的博客 :)
www.kingda.org  (AS3教程)

使用道具 举报

帖子
1912
体力
7180
威望
4
居住地
广东省 广州市
发表于 2006-9-29 09:25:43 |显示全部楼层
只是感叹一下呢..我没得什么精华贴啊..这些分都是灌水来的..

使用道具 举报

jevin 楼主

小丑鱼

银牌会员

帖子
1562
体力
5411
威望
0
发表于 2006-9-29 09:47:12 |显示全部楼层
谢谢斑竹
我还有个疑问

窗口 信息 下也有个点 那是什么点 主要控制坐标以中心还是左上为原点的吧?
和注册点及中心点应该都没关系吧

搞晕了

[ 本帖最后由 jevin 于 2006-9-29 09:51 编辑 ]
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-

使用道具 举报

帖子
80
体力
315
威望
1
发表于 2006-9-29 12:06:21 |显示全部楼层
恩,我想AS是可以改变注册点的。我去update我的blog 下午回来

==========================================
这是链接

http://space.flash8.net/space/html/55/381555_itemid_312725.html

谢谢你的访问

[ 本帖最后由 yukineco 于 2006-9-29 12:52 编辑 ]
已有 1 人评分威望 收起 理由
KingdaSun + 1 我很赞同

总评分: 威望 + 1   查看全部评分

使用道具 举报

帖子
1259
体力
3015
威望
3
发表于 2006-9-29 13:07:51 |显示全部楼层
谢谢楼上的!这个东东,回去要好好看看。

http://www.roading.net/blog/article.asp?id=53
请大家看看这篇,也是动态改变注册点的。有源文件,有哪位朋友能给看看,讲解一下。
已有 1 人评分威望 收起 理由
KingdaSun + 1 我很赞同

总评分: 威望 + 1   查看全部评分

使用道具 举报

黑羽翔天

金牌会员

帖子
450
体力
2731
威望
399
发表于 2006-9-29 13:37:56 |显示全部楼层
to yukineco,wysun369

thanks !
集思广益就是好!(已经打分了)
以前我碰到这个问题就是直接打个包装MovieClip就不管了,没想到还有这些好方法。

先将wysun369推荐的文章方法简介以下。
(以下内容来自http://www.darronschall.com/weblog/archives/000054.cfm)
下载工具类
然后,使用方法如下:
  1. //使用前,先导入类
  2. import com.darronschall.DynamicRegistration;

  3. // Assume there is an instance named square_mc on the stage
  4. //你要操作的MC
  5. var square_mc:MovieClip;

  6. // updated 7/28/05 - add the dynamic registration stuff at runtime to our square movieclip
  7. //使用DynamicRegistration初始化你的目标MC
  8. DynamicRegistration.initialize(square_mc);

  9. // The square_mc has an original registration at 0,0 so
  10. // let's change that to 10, 60 at runtime.
  11. //输入新注册点的坐标
  12. square_mc.setRegistration(10, 60);

  13. // Now whenever we access a property of the square_mc that deals
  14. // with the registration point, use a "2" after the property name...  
  15. // These are the available properties:
  16. //然后要操作这个MovieClip时就用如下的新属性来操作,只不过是在原来的尾部上加一个2
  17. square_mc._x2 = 4;
  18. square_mc._y2 = 7;
  19. square_mc._rotation2 = 40;
  20. square_mc._xscale2 = 140;
  21. square_mc._yscale2 = 80;
  22. // square_mc._xmouse2 is readonly
  23. // square_mc._ymouse2 is readonly
复制代码


以上方法适合新手使用。
我个人觉得yukineco的方法不适合Flash 8以前的版本,但也不失为一个简洁的解决办法。
黑羽翔天◎足下八邦
欢迎来我的博客 :)
www.kingda.org  (AS3教程)

使用道具 举报

帖子
1259
体力
3015
威望
3
发表于 2006-9-29 13:50:16 |显示全部楼层
黑羽版主:

文章是贴出来了,但原理,麻烦您老给讲讲呀。尤其是那个类文件,是用的什么方法实现的呀?看不懂啊。

使用道具 举报

黑羽翔天

金牌会员

帖子
450
体力
2731
威望
399
发表于 2006-9-29 21:51:03 |显示全部楼层
说白了,很简单
通过静态类方法initialize将目标MC加上了几个新属性,_x2,_y2等等新的属性
然后呢,设定新的注册点坐标

在我们操作_x2,_y2等属性时,实际上是执行了set_x2()等get,set函数,这些函数就执行了一些换算,将我们新设置的值_x2与新设置的注册点位置进行偏移折算,转换成了真正的_x值,这样target_mc就等到了转换之后的_x值,并执行了相应的变化。
黑羽翔天◎足下八邦
欢迎来我的博客 :)
www.kingda.org  (AS3教程)

使用道具 举报

帖子
36
体力
58
威望
2
居住地
广东省 广州市
发表于 2006-11-1 10:28:34 |显示全部楼层
/**
* @author sonygod  2006 10 31 china
* special thanks Zero
* use: to set the point of MovieClip
* include 9 point ,TL="top left" ex;
* how to use: first place this mc at your scence;
* then ,give a name of your mc ,for example:"setmc" also
*
* setmc.init("mm","link",8)    mm is in your lib,link name is mm
* setmc2.init("bg.jpg","load",5)
* there are 2 event

* 动态设置MC的注册点.有9个点可以设置,比如 TL=左上,MM=中中
* 如何使用: 首先在你场景放置个mc,给个名称给它,例如:"setmc" 等等
* 我们可以设置的mc可以在库里边或者外部
  *setmc.init("mm","link",8)    mm是你库里链接的名称
* setmc2.init("bg.jpg","load",5)
* 有2个事件
*
setmc.addEventListener("onLinkSet", this);
   setmc2.addEventListener("onLoadSet", this);
   setmc.init("mm", "link", 9);
   setmc2.init("bg.jpg", "linkx", 5);
   function onLinkSet(evt) {
        trace(evt.target+"\t"+evt.link+"\t"+evt.dir);
}
function onLoadSet(evt) {
        trace(evt.target+"\t"+evt.link+"\t"+evt.dir);
}
*
*
*
*
*
*
*
*/
import mx.events.EventDispatcher;
class SetMc extends MovieClip {
        public var addEventListener:Function;
        public var removeEventListener:Function;
        public var dispatchEvent:Function;
        private static var TL = 7;
        private static var TM = 8;
        private static var TR = 9;
        private static var ML = 4;
        private static var MM = 5;
        private static var MR = 6;
        private static var BL = 1;
        private static var BM = 2;
        private static var BR = 3;
        private  var xDir;
        private var target:String;
        private var link:String;
        private var dir:Number;
        private var yDir:Number;
        private var detaill:MovieClipLoader;
        private var dlistener:Object;
        private var subTarget:MovieClip;
        private static var thisclass="SetMc";
        private static var _mixin1 = EventDispatcher.initialize(SetMc.prototype);
        function SetMc() {
                trace("setMc class has load.........");
        }
       
        public function init(target:String, link:String, dir:Number) {
                this.target = target;
                this.link = link;
                this.dir = dir;
                setXY(dir);
                var loader= this.createEmptyMovieClip("loader", 0);
                if (link == "link") {
                        subTarget = loader.attachMovie(target, "targetok", 0);
                        setPostion(subTarget);
                        this.dispatchEvent({type:"onLinkSet", target:target,link:link,dir:dir});
                } else {
                        callDetail(target, loader);
                }
        }
       
        private function setXY(dir) {
                if (dir == TL || dir == ML || dir == BL) {
                        xDir = 0;
                } else if (dir == TM || dir == MM || dir == BM) {
                        xDir = -0.5;
                } else {
                        xDir = -1;
                }
                if (dir == TL || dir == TM || dir == TR) {
                        yDir = 0;
                } else if (dir == MM || dir == ML || dir == MR) {
                        yDir = -0.5;
                } else {
                        yDir = -1;
                }
        }
        public function callDetail(file, mc) {
                detaill = new MovieClipLoader();
                dlistener = new Object();
                dlistener.bto=this;
                dlistener.onLoadInit = function(tar) {
                        this.bto.setPostion(mc);
                        this.bto.dispatchEvent({type:"onLoadSet", target:this.bto.target,link:"load",dir:this.bto.dir});
                };
                dlistener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void  {
                //your can add your code here
                };
                dlistener.onLoadStart = function(tar) {
                        //your can add your code here
                };
                detaill.addListener(dlistener);
                detaill.loadClip(file, mc);
        }
        public function setPostion(tar:MovieClip) {
               
                tar._x = tar._width*xDir;
                tar._y = tar._height*yDir;
        }
}

使用道具 举报

帖子
137
体力
332
威望
3
发表于 2006-11-1 10:46:16 |显示全部楼层
打上记号,用的时候再研究吧

使用道具 举报

帖子
90
体力
171
威望
0
发表于 2006-12-28 19:08:33 |显示全部楼层
看不懂啊!着急啊!
向热心朋友致敬

使用道具 举报

帖子
31
体力
112
威望
0
发表于 2007-1-5 10:43:25 |显示全部楼层
学习ING!!
www.yanghome.com.cn

使用道具 举报

帖子
15
体力
21
威望
0
发表于 2007-1-5 16:39:21 |显示全部楼层
俺菜鸟。最近发现个奇怪的地方。
    好象元件在场景内trace出来的_x,_y都不是属性显示的以左上角为准的坐标哦。
   
     比如说,元件内部,图的注册点不是在左上,而且在中心的话。
   
        在场景内,属性显示器,显示的左边仍然是以左上为准的坐标。但是用trace的话,
就看到出来的坐标值居然是元件注册点在场景内的坐标。

  这个 让我感觉很混乱哦,属性器显示的坐标和trace出来的坐标居然还不一样。。。。。。。

使用道具 举报

帖子
159
体力
681
威望
0
发表于 2007-1-9 11:25:09 |显示全部楼层
已经用上了,不错的思路。

使用道具 举报

帖子
1
体力
12
威望
0
发表于 2007-9-9 11:41:05 |显示全部楼层
谢谢!

已经找了很久了。

已用上了 。

网站是:

http://www.msn-jianshi.cn
MSN监视

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-11 03:48 , Processed in 0.110106 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部