当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • AS3.0 动态改变注册点
  • 来源:zjs35's blog 作者:zjs35 2007-11-15 【
FlashAs作品发表>>我要投稿 | FlashAs讨论区>>AS论坛
Flash Media Server学习站>>www.FMScn.com


参考老外的思路,改成了as3版

package fbook.game.display
{
 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 fbook.game.display.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) 
 
}

效果,直接看吧,5d新版还是没搞好





上一篇:AS3.0:web传值给as3   下一篇:AS3.0轻量级缓动工具类TweenLite
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)