亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

Flash類的運用:可放大、縮小、旋轉的鼠標操作類代碼介紹

2020-07-17 13:12:04
字體:
來源:轉載
供稿:網友

本教程主要用Flash類來制作一個特效,要用到鼠標操作元件,放大、縮小、旋轉、移動?;艘恍r間,終于實現了,代碼整理了一下,和大家分享一下。希望大家提出意見,修改。廢話少說,先看效果:

操作類:

復制代碼
代碼如下:
package com.mygamemylove{
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.geom.Rectangle;
public class opObject {
private var spOp:Sprite;
private var currentOp:Sprite;
private var arrPoint:Array;
//
private var isDrogOp:Boolean;
private var isDrog:Boolean;
private var pointType:uint;
private var spPoint:Sprite;
//
private var sizeType:Number;
private var minW:Number;
private var minH:Number;
private var drawC:uint;
private var spParent:Sprite;
//旋轉
private var isR:Boolean
public var nowRotation:Number;
public var pCent:Point;
public var spRotationPoint:Sprite;
public var spCenterPoint:Sprite;
public var numOpPointWH:uint;

/**
* 操作一個對象,可以放大縮小,旋轉。
*原創flash代碼,盡在自娛自樂 www.MyGameMyLove.com
*smallerbird smallerbird@gmail.com 2009-9-12
*
*
* @spParent:Sprite 操作對象的父對象
* @currentOp:Sprite 其中操作的一個對象
* @sizeType:Number 調整尺寸的顯示模式。
* @minW:Number 縮小最小尺寸寬
* @minH:Number 縮小最小尺寸高
* @drawC:Number 操作柄的色
* @numOpPointWH:Number 操作柄的寬高
* */
public function opObject(spParent:Sprite,currentOp:Sprite, sizeType:Number=1,
minW:Number=10, minH:Number=10, drawC:Number=0xff0000, numOpPointWH:uint=10){

this.numOpPointWH=numOpPointWH;
this.currentOp=currentOp
this.spParent=spParent;
this.spParent.mouseEnabled=false;
this.sizeType=sizeType;
this.minW=minW;
this.minH=minH;
isDrogOp=false;
isDrog=false;
pointType=0;
arrPoint=new Array();
nowRotation=0;
isR=true
}
源代碼下載地址:http://www.mygamemylove.com/bbs/viewthread.php?tid=48
//改變注冊點
public static function RegPoint($obj:Sprite, $point:Point):void {
var tmp_point:Point=$obj.parent.globalToLocal($obj.localToGlobal($point));
var len:int=$obj.numChildren;
while (len--) {
var tmp_obj:DisplayObject=$obj.getChildAt(len);
tmp_obj.x-=$point.x;
tmp_obj.y-=$point.y;
}
$obj.x=tmp_point.x;
$obj.y=tmp_point.y;
}
private function drawR(g:Graphics, c:uint, x:Number, y:Number, w:Number, h:Number):void {
g.beginFill(c, 0.5);
g.drawRoundRect(x, y, w, h, 5);
g.endFill();
}
private function drawOpPont(sp:Sprite, x:Number, y:Number, c:uint, w:Number, h:Number):void {
var spTem:Sprite=new Sprite();
spTem.x=x;
spTem.y=y;
drawR(spTem.graphics, c, -w / 2, -h / 2, w, h);
sp.addChild(spTem);
arrPoint.push(spTem);
}
//
private function clrPointSize():void {
if (arrPoint.length != 0) {
for (var i:uint=0; i < arrPoint.length; i++) {
arrPoint[i].removeEventListener(MouseEvent.MOUSE_DOWN, fun_point_down);
arrPoint[i].removeEventListener(MouseEvent.MOUSE_UP, fun_point_up);
spParent.removeChild(arrPoint[i]);
}
arrPoint=new Array();
}
spParent.graphics.clear();
}
//
private function clrPoint():void {
clrPointSize();
if (spCenterPoint != null) {
spParent.removeChild(spCenterPoint);
spCenterPoint=null;
spParent.removeChild(spRotationPoint);
}
}
//
private function showOp4point(sp:Sprite):void {
//
clrPoint();
var r:Rectangle=sp.getRect(spParent);
//
var x1:Number=r.x;
var y1:Number=r.y;
var w1:Number=r.width;
var h1:Number=r.height;
var w2:Number=w1 / 2;
var h2:Number=h1 / 2;
//
var c:uint=drawC;
var p_tem:Sprite=spParent;
//
pCent=new Point(x1 + w2, y1 + h2);
//
drawOpPont(p_tem, x1, y1, c, numOpPointWH, numOpPointWH);
drawOpPont(p_tem, x1 + w2, y1, c, numOpPointWH, numOpPointWH);
drawOpPont(p_tem, x1 + w1, y1, c, numOpPointWH, numOpPointWH);
//
drawOpPont(p_tem, x1 + w1, y1 + h2, c, numOpPointWH, numOpPointWH);
drawOpPont(p_tem, x1 + w1, y1 + h1, c, numOpPointWH, numOpPointWH);
//
drawOpPont(p_tem, x1 + w2, y1 + h1, c, numOpPointWH, numOpPointWH);
drawOpPont(p_tem, x1, y1 + h1, c, numOpPointWH, numOpPointWH);
drawOpPont(p_tem, x1, y1 + h2, c, numOpPointWH, numOpPointWH);
for (var i:uint=0; i < arrPoint.length; i++) {
arrPoint[i].addEventListener(MouseEvent.MOUSE_DOWN, fun_point_down);
arrPoint[i].addEventListener(MouseEvent.MOUSE_UP, fun_point_up);
}
//
//畫連線
var gTem:Graphics=p_tem.graphics;
gTem.clear();
gTem.lineStyle(1, c, 0.5);
gTem.moveTo(arrPoint[0].x, arrPoint[0].y);
for (i=1; i < arrPoint.length; i++) {
gTem.lineTo(arrPoint[i].x, arrPoint[i].y);
}
gTem.lineTo(arrPoint[0].x, arrPoint[0].y);
gTem.lineTo(arrPoint[4].x, arrPoint[4].y);
gTem.moveTo(arrPoint[6].x, arrPoint[6].y);
gTem.lineTo(arrPoint[2].x, arrPoint[2].y);
//
gTem.moveTo(arrPoint[1].x, arrPoint[1].y);
gTem.lineTo(arrPoint[5].x, arrPoint[5].y);
//
gTem.moveTo(arrPoint[7].x, arrPoint[7].y);
gTem.lineTo(arrPoint[3].x, arrPoint[3].y);
//畫旋轉的點
//中心點
if(isR){
spCenterPoint=new Sprite();
spCenterPoint.mouseEnabled=false;
spCenterPoint.graphics.beginFill(0xff0000, 0.5);
spCenterPoint.graphics.drawCircle(0, 0, numOpPointWH / 2);
spCenterPoint.graphics.endFill();
spCenterPoint.x=pCent.x;
spCenterPoint.y=pCent.y;
var pTem:Point=currentOp.globalToLocal(pCent);
spParent.addChild(spCenterPoint);
//旋轉控制點
spRotationPoint=new Sprite();
spRotationPoint.graphics.beginFill(0xff0000, 0.5);
spRotationPoint.graphics.drawCircle(0, 0, numOpPointWH / 2);
spRotationPoint.graphics.endFill();
spRotationPoint.x=x1 - numOpPointWH;
spRotationPoint.y=y1 - numOpPointWH;
spParent.addChild(spRotationPoint);
spRotationPoint.addEventListener(MouseEvent.MOUSE_DOWN, fun_point_down);
spRotationPoint.addEventListener(MouseEvent.MOUSE_UP, fun_point_up);
}
//
}
public function fun_opUp(e:MouseEvent):void {
isDrogOp=false;
currentOp.stopDrag();
showOp4point(currentOp);
}
//如果isR=false 不可以進行旋轉操作
public function fun_opDown(e:MouseEvent,isR:Boolean=true):void {
this.isR=isR
currentOp=e.target as Sprite;
showOp4point(currentOp);
//
currentOp.startDrag();
isDrogOp=true;
}
public function fun_over(e:MouseEvent):void {
var spTem:Sprite=e.target as Sprite;
}
//
//不能越過邊界
public function noMoveBorder(rBorder:Rectangle):uint {
var r:Rectangle = currentOp.getBounds(spParent)
var numOffsetTem:Number=10
if(rBorder.width-numOffsetTem<r.width){
currentOp.width=rBorder.width-numOffsetTem
return 0
}
if(rBorder.height-numOffsetTem<r.height){
currentOp.height=rBorder.height-numOffsetTem
return 0
}
//trace(currentOp);
if (r.x<rBorder.x) {
opObject.RegPoint(currentOp, currentOp.globalToLocal(pCent));
no();
currentOp.x=rBorder.x+r.width/2;
}
if (r.y<rBorder.y) {
opObject.RegPoint(currentOp, currentOp.globalToLocal(pCent));
no();
currentOp.y=rBorder.y+r.height/2;
}
if (r.x+r.width>rBorder.x+rBorder.width) {
opObject.RegPoint(currentOp, currentOp.globalToLocal(pCent));
no();
currentOp.x=rBorder.x+rBorder.width-r.width/2;
}
if (r.y+r.height>rBorder.y+rBorder.height) {
opObject.RegPoint(currentOp, currentOp.globalToLocal(pCent));
no();
currentOp.y=rBorder.y+rBorder.height-r.height/2;
}
return 0
}
//取消的所有動作
public function no():void {
isDrog=false;
clrPoint();
if (spPoint) {
spPoint.stopDrag();
}
currentOp.stopDrag();
}
//重新設置注冊點
private function seCentXY():void {
var pTem:Point;
switch (pointType) {
case 1 :
pTem=currentOp.globalToLocal(new Point(arrPoint[4].x, arrPoint[4].y));
break;
case 2 :
pTem=currentOp.globalToLocal(new Point(arrPoint[5].x, arrPoint[5].y));
break;
case 3 :
pTem=currentOp.globalToLocal(new Point(arrPoint[6].x, arrPoint[6].y));
break;
case 4 :
pTem=currentOp.globalToLocal(new Point(arrPoint[7].x, arrPoint[7].y));
break;
case 5 :
pTem=currentOp.globalToLocal(new Point(arrPoint[0].x, arrPoint[0].y));
break;
case 6 :
pTem=currentOp.globalToLocal(new Point(arrPoint[1].x, arrPoint[1].y));
break;
case 7 :
pTem=currentOp.globalToLocal(new Point(arrPoint[2].x, arrPoint[2].y));
break;
case 8 :
pTem=currentOp.globalToLocal(new Point(arrPoint[3].x, arrPoint[3].y));
break;
}
opObject.RegPoint(currentOp, pTem);
}
private function fun_point_down(e:MouseEvent):void {
//
var spTem:Sprite=e.target as Sprite;
spPoint=spTem;
if (spRotationPoint == spPoint) {
var dx:Number=currentOp.parent.mouseX - pCent.x;
var dy:Number=currentOp.parent.mouseY - pCent.y;
nowRotation-=(Math.atan2(dy, dx) * 180 / Math.PI);
var pTem:Point=currentOp.globalToLocal(pCent);
opObject.RegPoint(currentOp, pTem);
spTem.alpha=0;
clrPointSize();
} else {
pointType=0;
for (var i:uint=0; i < arrPoint.length; i++) {
if (arrPoint[i] == spTem) {
pointType=i + 1;
break;
}
}
seCentXY();
}
isDrog=true;
spTem.startDrag(true);
}
private function fun_point_up(e:MouseEvent):void {
nowRotation=currentOp.rotation;
clrPoint();
}
private function isUpObj(sp:Sprite):Boolean {
var isRe:Boolean=false;
if (currentOp == sp) {
isRe=true;
} else {
for (var i:uint=0; i < arrPoint.length; i++) {
if (arrPoint[i] == sp) {
isRe=true;
break;
}
}
//
if (spRotationPoint == sp) {
isRe=true;
}
}
return isRe;
}
public function fun_Mouse_up(e:MouseEvent):void {
isDrog=false;
if (!isUpObj(e.target as Sprite)) {
clrPoint();
} else {
if (spPoint) {
spPoint.stopDrag();
}
}
}

public function fun_onEnterFrame(e:Event):Boolean {
if (isDrogOp) {
showOp4point(currentOp);
}
if (!isDrog) {
return false;
}
var spTem:Sprite=spPoint;
var dx:Number, dy:Number;
//旋轉
if (spRotationPoint == spPoint) {
dx=currentOp.parent.mouseX - pCent.x;
dy=currentOp.parent.mouseY - pCent.y;
currentOp.rotation=(Math.atan2(dy, dx) * 180 / Math.PI) + nowRotation;
return true;
}
//放大///////////////
switch (pointType) {
case 1 :
dx=arrPoint[4].x - spTem.x;
dy=arrPoint[4].y - spTem.y;
break;
case 2 :
dx=0;
dy=arrPoint[5].y - spTem.y;
break;
case 3 :
dx=spTem.x - arrPoint[6].x;
dy=arrPoint[6].y - spTem.y;
break;
case 4 :
dx=spTem.x - arrPoint[7].x;
dy=0;
break;
case 5 :
dx=spTem.x - arrPoint[0].x;
dy=spTem.y - arrPoint[0].y;
break;
case 6 :
dx=0;
dy=spTem.y - arrPoint[1].y;
break;
case 7 :
dx=arrPoint[2].x - spTem.x;
dy=spTem.y - arrPoint[2].y;
break;
case 8 :
dx=arrPoint[3].x - spTem.x;
dy=0;
break;
}
if (dx > minW) {
currentOp.width=dx;
}
if (dy > minH) {
currentOp.height=dy;
}
showOp4point(currentOp);
return true;
}
}
}

以上就是可放大、縮小、旋轉的鼠標操作類代碼的整理,希望對大家有一定的幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91免费观看网站| 亚洲精品v欧美精品v日韩精品| 高清欧美一区二区三区| 国产精品丝袜久久久久久不卡| 亚洲乱码一区二区| 国模叶桐国产精品一区| 欧美第一页在线| 国产午夜精品全部视频在线播放| 中文字幕日韩视频| 国产精品三级久久久久久电影| 国产精品无码专区在线观看| 国产精品欧美久久久| 日韩av在线免费观看| 欧美丰满老妇厨房牲生活| 欧美裸体男粗大视频在线观看| 国产一级揄自揄精品视频| 国产日韩欧美日韩| 91系列在线播放| 国产97在线视频| 国产suv精品一区二区| 国产日韩精品在线观看| xxxxxxxxx欧美| 国产精品入口夜色视频大尺度| 夜夜嗨av一区二区三区免费区| 欧美国产第二页| 最近日韩中文字幕中文| 日韩中文视频免费在线观看| 日韩免费在线看| 久久精品国产2020观看福利| 国产成人小视频在线观看| 中文字幕欧美精品日韩中文字幕| 91久久国产综合久久91精品网站| 精品国产31久久久久久| 九九久久久久99精品| 国产成人精品亚洲精品| 成人观看高清在线观看免费| 久久久视频精品| 午夜精品视频网站| 欧美视频一二三| 国产精品一香蕉国产线看观看| 日韩电视剧免费观看网站| 91禁外国网站| 69av成年福利视频| 精品成人国产在线观看男人呻吟| 欧美激情在线一区| 久热精品视频在线免费观看| 亚洲精品小视频在线观看| 亚洲a在线播放| 欧美成人精品一区二区| 国产丝袜精品第一页| 欧美性极品少妇精品网站| 51精品在线观看| 国产精品劲爆视频| 亚洲一区中文字幕| 原创国产精品91| 国产精品第一第二| 日韩精品视频在线| 91大神在线播放精品| 日本久久中文字幕| 亚洲欧洲成视频免费观看| 亚洲免费人成在线视频观看| 欧美精品一二区| 日本韩国欧美精品大片卡二| 国产亚洲欧美aaaa| 国产成+人+综合+亚洲欧洲| 日韩中文字幕在线免费观看| 亚洲精品综合精品自拍| 日韩av手机在线观看| 亚洲欧美日韩精品久久亚洲区| 国产精品免费视频久久久| 色天天综合狠狠色| 中文字幕亚洲综合久久| 中文字幕日韩在线播放| 中文字幕久热精品视频在线| 深夜精品寂寞黄网站在线观看| 日韩精品视频在线观看网址| 日韩中文字幕国产精品| 人人做人人澡人人爽欧美| 中文欧美在线视频| 久久久精品在线观看| 欧美乱妇40p| 亚洲天堂网站在线观看视频| 国产69精品久久久| 中文字幕欧美视频在线| 欧美黑人xxxⅹ高潮交| 国产精品欧美日韩久久| 国产香蕉一区二区三区在线视频| 国产福利成人在线| 国模精品视频一区二区| 国产精品福利观看| 久久久久久久一区二区三区| 国产精品99久久久久久www| 少妇av一区二区三区| 在线精品国产成人综合| 色婷婷久久一区二区| 国产精品吹潮在线观看| 精品成人国产在线观看男人呻吟| 国产a级全部精品| 亚洲аv电影天堂网| 91香蕉嫩草影院入口| 97碰碰碰免费色视频| 久久五月天色综合| 午夜精品福利视频| 在线播放国产一区中文字幕剧情欧美| 亚洲第一色在线| 久久激情视频久久| 一级做a爰片久久毛片美女图片| 亚洲国产精品嫩草影院久久| 国产精品视频一区二区高潮| 91精品国产综合久久久久久久久| 欧美wwwwww| 国产亚洲美女精品久久久| 欧美日韩国产在线看| 国产一区视频在线| zzijzzij亚洲日本成熟少妇| 国产v综合ⅴ日韩v欧美大片| 亚洲精品一区二区三区婷婷月| 久久精品国产久精国产一老狼| 中文字幕自拍vr一区二区三区| 91精品国产自产91精品| 日本精品一区二区三区在线播放视频| 国产视频久久久| 亚洲激情电影中文字幕| 在线观看视频99| 国内精品中文字幕| 两个人的视频www国产精品| 91精品91久久久久久| 日韩精品中文字幕视频在线| 国产精品69精品一区二区三区| 欧美理论电影在线观看| 国产精品久久久av| 国产综合福利在线| 亚洲片国产一区一级在线观看| 久久久精品欧美| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩欧美主播在线| 国产在线视频一区| 国产精品日韩在线观看| 中国日韩欧美久久久久久久久| 亚洲精品国产精品国产自| 欧美另类99xxxxx| 日本成人黄色片| 久久久久久久电影一区| 欧美精品亚州精品| 美女久久久久久久久久久| 亚洲jizzjizz日本少妇| 人人澡人人澡人人看欧美| 国产精品视频一区二区高潮| 成人黄色影片在线| 亚洲第一中文字幕| 日韩av成人在线观看| 国产亚洲a∨片在线观看| 中国china体内裑精亚洲片| 国产精品高潮视频| 欧美男插女视频| 国产精品美女久久| 亚洲成人av资源网| 欧美激情图片区| 国产亚洲精品一区二555| 国产精品白嫩初高中害羞小美女| 亚洲跨种族黑人xxx| 欧美成人亚洲成人日韩成人| 久久91亚洲精品中文字幕奶水| 久久久久久久国产精品|