package
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.GradientType;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.text.TextField;
import flash.utils.getQualifiedClassName; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-10-12 下午4:28:13
*
*/
[SWF(width="800",height="600")]
public class DynamicRegistration extends Sprite
{
private var _obj:Sprite;
private var _pot:Shape;
private var _value:Number = 1;
private var _property:Array = ["width","height","scaleX","scaleY","rotation"];
private var _currPro:String = "width";
public function DynamicRegistration()
{
initViews();
initEventListeners();
}
private function initViews():void
{
var matr:Matrix = new Matrix();
matr.createGradientBox(480, 100, 0, 0, 0); _pot = new Shape();
_obj = new Sprite();
_obj.graphics.beginGradientFill(GradientType.LINEAR,[0xFF0000, 0xFF00FF],[1,1],[0,255],matr);
_obj.graphics.drawRect(0,0,200,150);
_obj.graphics.endFill();
_obj.x = (stage.stageWidth - _obj.width )*0.5;
_obj.y = (stage.stageHeight - _obj.height)*0.5;
_pot.graphics.beginFill(0,.5);
_pot.graphics.drawCircle(0,0,5);
_pot.graphics.endFill();
_pot.x = _obj.x;
_pot.y = _obj.y;
for(var i:int = 0;i<_property.length;i++){
var pro:TextField = getButton(" "+_property[i]+" ",this,stage.stageWidth-100,150+30*i,_property[i]);
pro.addEventListener(MouseEvent.CLICK,onSelectProperty);
}
setProState(_currPro);
this.addChild(_obj);
this.addChild(_pot);
}
private function initEventListeners():void
{
_obj.addEventListener(MouseEvent.CLICK,onClick);
} private function onClick(e:MouseEvent):void
{
_value = _obj[_currPro];
switch(_currPro){
case _property[0]:
case _property[1]:
_value+=10;
break;
case _property[2]:
case _property[3]:
_value+=0.2;
break;
case _property[4]:
_value+=20;
break;
}
dynamicRegistration1(_obj,new Point(_obj.mouseX,_obj.mouseY),_currPro,_value);
_pot.x = mouseX;
_pot.y = mouseY;
}
private function onSelectProperty(e:MouseEvent):void
{
_currPro = e.currentTarget.name;
setProState(_currPro);
}
private function setProState(pro:String):void
{
for(var i:int = 0;i<_property.length;i++){
if(_property[i] == pro){
(this.getChildByName(_property[i]) as TextField).borderColor = 0x00ffff;
}else{
(this.getChildByName(_property[i]) as TextField).borderColor = 0x222222;
}
}
}
private function getButton(text:String,parent:Sprite,x:Number=0,y:Number=0,name:String=null):TextField
{
var textButton:TextField = new TextField();
textButton.autoSize = "left";
textButton.width = 110;
textButton.height = 38;
textButton.selectable = false;
textButton.border = true;
textButton.borderColor = 0x222222;
textButton.background = true;
textButton.backgroundColor = 0xaaaaaa;
textButton.htmlText = "<a href='event:#'>"+text+"</a>";
textButton.x = x;
textButton.y = y;
if(name!=null){
textButton.name = name;
}
parent.addChild(textButton);
return textButton;
} /**
* 动态改变注册点
* target 改变注册点的对象
* point 新的注册点
* pro 需要改变的属性
* value 新的属性值
*/
private function dynamicRegistration1(target:DisplayObject,point:Point,pro:String,value:Number):void
{
//转换为全局坐标
var A:Point=target.parent.globalToLocal(target.localToGlobal(point));
if(pro == "x"||pro == "y"){
target[pro] = value-point[pro];
}else{
target[pro]=value;
var B:Point = target.parent.globalToLocal(target.localToGlobal(point));
//把注册点从B点移到A点
target.x+=A.x-B.x;
target.y+=A.y-B.y;
}
}
} }

[ActionScript 3.0] AS3动态改变注册点的更多相关文章

  1. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  2. [ActionScript 3.0] as3处理xml的功能和遍历节点

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  3. [ActionScript 3.0] AS3 深入理解Flash的 应用程序域Application Domains

    简介 网上有很多flash,通常都不需要显示的使用应用程序域,因为默认的应用程序域就够用了.其实复杂的情况下需要用到应用程序域,比如说有两个不同的swf,一个是旧版本的,一个是新版的,这两个文件里的类 ...

  4. [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains

    简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时 ...

  5. [ActionScript 3.0] AS3.0和AS2.0的相互通信

    AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) ...

  6. [ActionScript 3.0] AS3.0 对象在矩形范围随机运动

    package com.views { import flash.display.Bitmap; import flash.display.MovieClip; import flash.displa ...

  7. [ActionScript 3.0] AS3.0 本机鼠标指针

    Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...

  8. [ActionScript 3.0] AS3调用百度天气预报查询API

    接口说明 根据经纬度/城市名查询天气的结果 接口示例 http://api.map.baidu.com/telematics/v3/weather?location=成都&output=jso ...

  9. [ActionScript 3.0] AS3.0 让一个视频无缝循环播放的一个偏方

    一个视频要循环播放,通常的办法都是播放完后再重新播放,但是不可避免的播放结束和重新开始播放这个时间点上会有停顿,如何解决这个问题,说个偏方吧! package com.views { import f ...

随机推荐

  1. Post Complex JavaScript Objects to ASP.NET MVC Controllers

    http://www.nickriggs.com/posts/post-complex-javascript-objects-to-asp-net-mvc-controllers/     Post ...

  2. Dom实例:数据自增、搜索框及跑马灯

    数据自增 功能:当点击add按扭后,div标签中的数据自动+1,实现网页的动态化 <!DOCTYPE html> <html lang="en"> < ...

  3. ArrayList和LinkedList遍历方式及性能对比分析

    ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayLis ...

  4. DW(一):大数据DW架构参考

    DW一直以来是企业信息与决策支持系统的核心组件,随着各类日志.社交.传感等非结构化数据的加入,企业内部数据按指数级增长,传统DW已经达到一个关键临界点——需要大量的资源投入到硬件.优化.支持和维护中, ...

  5. 按后退键退出Android程序

    主要的目的是按后退键的时候,让程序能够退出. 实现起来的思路: 1.捕获后退键被按了这个事件. Java代码  @Override public boolean onKeyDown(int keyCo ...

  6. js之浏览器对象模型(BOM)

    一.BOM的层次结构: window(可以访问BOM中的所有元素,是最顶层的元素)下一层包括如下: →document (document的属性:forms.cookie.links/anchors. ...

  7. Windows下使用批处理设置IP地址,DNS

    自动获取IP地址: echo 本地连接 改成你想要改的连接名 比如 无线网络连接set cname=本地连接 echo %cname% 正在设置自动获得IP地址,请稍等...... netsh int ...

  8. LeetCode "Binary Tree Vertical Order"

    BFS + HashTable class Solution { int maxl, minl; unordered_map<int, vector<int>> hm; pub ...

  9. noaman日志第一条:2015-1024;“Hello.World”

    在南京的不知道第几个周末,一夜的煎熬终于活过来了.清早起来开通了自己的博客,第一条说说就记录开通博客这个事件.没有别的. 之后我会着重记录每天看书内容,以及所要编写的重要程序,一点一滴地积累希望能收获 ...

  10. bzoj3743 Kamp

    Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...