flash动态改变注册点
这是一个动态改变注册点的类package {
//动态改变注册点类
import flash.display.DisplayObject;
import flash.geom.Point;
//动态设置注册点
public class DynamicRegistration {
//需更改的注册点位置
private var regpoint:Point;
//更改注册的显示对象
private var target:DisplayObject;
private var Height:Number;
private var Width:Number;
//首先要确定初始状态
public function DynamicRegistration(target:DisplayObject,regpoint:Point,iWidth:Number=320,iHeight:Number=240) {
Width=iWidth;
Height=iHeight;
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 if (prop=="scaleX" || prop=="scaleY") {
if (mc[prop]>value) {
//放大过程
mc.x+=((Width*(value+0.1))-(Width*value))/4;
mc.y+=((Height*(value+0.1))-(Height*value))/4;
} else {
//缩小过程
mc.x-=((Width*value)-(Width*(value-0.1)))/4;
mc.y-=((Height*value)-(Height*(value-0.1)))/4;
}
mc[prop]=value;
} 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;
}
}
}
}
用法如下:
在舞台上放个mc、btn、btn2package{
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.system.fscommand;
public class Test extends MovieClip{
private var reg:DynamicRegistration;
private var speed:Number=1;
public function Test(){
reg=new DynamicRegistration(mc,new Point(mc.width/2,mc.height/2),mc.width,mc.height);
btn.addEventListener(MouseEvent.CLICK,clickHandler);
btn2.addEventListener(MouseEvent.CLICK,lessenHandler);
}
private function clickHandler(e:MouseEvent):void{
//mc.scaleX+=0.2;
//mc.scaleY+=0.2;
speed+=0.2;
reg.flush("scaleX",speed);
reg.flush("scaleY",speed);
}
private function lessenHandler(e:MouseEvent):void{
speed-=0.2;
reg.flush("scaleX",speed);
reg.flush("scaleY",speed);
//mc.scaleX-=0.2;
//mc.scaleY-=0.2;
}
}
}
flash动态改变注册点相关推荐
- 移动端 = 动态改变头部透明度
// 利用函数自执行 可以避免全局变量的污染,让代码模块化 // 加分号的目的是为了代码合并的时候避免报错 ;(function(){//需求:在滚动的时候动态改变jd-header的透明度//思路: ...
- Android 动态改变桌面图标
其实很简单,利用 AndroidManifest.xml 文件中的 <activity-alias> 标签即可实现. <activity-alias> 介绍 大家知道,对于 A ...
- C# 设计时动态改变实体在PropertyGrid中显示出来的属性
方法一: /// <summary>/// 实体属性处理/// </summary>public class PropertyHandle{#region 反射控制只读.可见属 ...
- 使用CAShapeLayer实现一个音量大小动态改变的控件
一.案例演示 对于实时显示语音音量大小的需求,发现很多人的实现方式通过预放置多张图进行切换进行完成的.这样的处理,不但会浪费App的资源存储空间,而且效率也不高.对于符合某一定规律动态改变的图形,我们 ...
- uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!
uniapp.vue,vuex中state改变,getters不动态改变的完美解决方案! 参考文章: (1)uniapp.vue,vuex中state改变,getters不动态改变的完美解决方案! ( ...
- 解决javascript动态改变img的src属性图片不显示问题
解决javascript动态改变img的src属性图片不显示问题 参考文章: (1)解决javascript动态改变img的src属性图片不显示问题 (2)https://www.cnblogs.co ...
- 【Android 进程保活】oom_adj 值 ( oom_adj 值对应的进程优先级 | oom_adj 值动态改变 | 进程保活优化方向 )
文章目录 一.oom_adj 值对应的进程优先级 二.oom_adj 值动态改变 1.正常运行时的 oom_adj 值 2.按下 Home 键后的 oom_adj 值 3.按下回退键后的 oom_ad ...
- WEUI picker组件无法js动态改变选项
功能需求 设备号和摄像头都可以下拉选择,但是具体的摄像头下拉选项是根据设备号而定的.如下图,尾号为352的设备号只有前置摄像头,尾号为657的设备号前置和后置摄像头都有. 问题说明 一般情况下,这个需 ...
- js动态改变下拉菜单内容示例 .
<HTML><HEAD><TITLE>动态改变下拉菜单内容示例</TITLE></HEAD><SCRIPT LANGUAGE=java ...
最新文章
- 英雄联盟诺手又回来了,国服诺手在上单,可谓一夫当关,万夫莫开
- 这篇Redis文章,图灵看了都说好
- SQL Server 中关于EXCEPT和INTERSECT的使用方法
- java 数据库操作教程_数据库基本操作:增删改查及联表操作
- mfa助听器设备能否在android,助听器的蓝牙功能到底有什么用,购买的价格,以及购买时要注意什么等问题...
- 单片机汉字点阵c语言程序,51单片机C语言多种点阵屏驱动程序(开发软件为keil C...
- 嗯嗯------摘抄
- JavaScript的封装方法
- 基于LDC1000的自动循迹小车
- coherence mysql_Coherence Step by Step 第三篇 缓存(二) 配置(翻译)
- eclipse简单的中英文切换,觉大多数的版本都可以
- centos7挂载ntfs文件系统_CentOS7挂载NTFS格式的硬盘
- excel 职位分析
- 如何撤回已发送的邮件?邮件撤回成功后对方还能看到吗
- 如何下载网上只能看不能下载的PPT文件
- UFS发生命令超时处理流程
- mysql按时间段统计_mysql按照时间段内 每天统计
- 再探矩阵求逆引理 : Woodbury恒等式的证明
- RGB565,RGB8888等相关
- aso优化师是什么_【aso优化师赵星凯】简述为什么要做aso?