as3 动态修改注册点

package {
 import flash.display.DisplayObject;
 import flash.geom.Point;
 //动态设置注册点
 public class DynamicRegistration {
  //需更改的注册点位置
  private var regpoint:Point;
  //更改注册的显示对象
  private var target:DisplayObject;
  function DynamicRegistration(target:DisplayObject,regpoint:Point) {
   this.target=target;
   this.regpoint=regpoint;
  }
  //设置显示对象的属性
  public function flush(prop:String,value:Number):void {
   var mc=this.target;
   //转换为全局坐标
   var A:Point=mc.parent.globalToLocal(mc.localToGlobal(regpoint));
   if (prop=="x"||prop=="y") {
    mc[prop]=value-regpoint[prop]    ;
   } else {
    mc[prop]=value;
    //执行旋转等属性后,再重新计算全局坐标
    var B:Point=mc.parent.globalToLocal(mc.localToGlobal(regpoint));
    //把注册点从B点移到A点
    mc.x+=A.x-B.x;
    mc.y+=A.y-B.y;
   }
  }
 }
}
//使用方法;
import DynamicRegistration;
var reg:DynamicRegistration=new DynamicRegistration(mc,new Point(100,50));
stage.addEventListener(MouseEvent.CLICK,setPoint);
p_mc.x=mc.x+100;
p_mc.y=mc.y+50;
var speed=1;
mc.rotation=5;
function setPoint(e:MouseEvent):void {
 speed+=.1;
 reg.flush("scaleX",speed);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值