论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

AS3.0 动态改变注册点

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:43:46


参考老外的思路,改成了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新版还是没搞好

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058