- 浏览: 1454452 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
package com.wdxc { /** * ... * @author luqinglong */ public class MouseInfo { /*鼠标左边缘、右边缘等*/ private var _position:uint = 100 ; /*鼠标状态 按下、放开*/ private var _state :uint = 100; public function MouseInfo() { } public function set position(p:uint):void { this._position = p ; } public function get position():uint { return this._position ; } public function set state(s:uint):void { this._state = s ; } public function get state():uint { return _state ; } /** * 是否满足对左边进行拖动拉伸的条件。 * @return boolean */ public function isStartLeftDrag():Boolean { if (_position == Constant.LEFT && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对右边界进行拖动拉伸的条件。 * @return boolean */ public function isStartRightDrag():Boolean { if (_position == Constant.RIGHT && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对上边界进行拖动拉伸的条件。 * @return boolean */ public function isStartUpDrag():Boolean { if (_position == Constant.UP && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对下边界进行拖动拉伸的条件。 * @return boolean */ public function isStartDownDrag():Boolean { if (_position == Constant.DOWN && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对裁剪区域进行拖动拉伸的条件。 * @return boolean */ public function isStartMiddleDrag():Boolean { if (_position == Constant.MIDDLE && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对左上角拖动拉伸的条件。 * @return boolean */ public function isStratLeftUPDrag():Boolean { if (_position == Constant.LEFT_UP && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对左下角拖动拉伸的条件。 * @return boolean */ public function isStratLeftDownDrag():Boolean { if (_position == Constant.LEFT_DOWN && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对右上角拖动拉伸的条件。 * @return boolean */ public function isStratRightUPDrag():Boolean { if (_position == Constant.RIGHT_UP && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } /** * 是否满足对右下角拖动拉伸的条件。 * @return boolean */ public function isStratRightDownDrag():Boolean { if (_position == Constant.RIGHT_DOWN && _state == Constant.MOUSE_DOWN) { return true ; } return false ; } } }
代码一:
package { import com.wdxc.ImageCut; import com.wdxc.ImageRotation; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.* ; import flash.display.*; import flash.geom.* ; import flash.net.*; import flash.text.TextField; import flash.utils.ByteArray; import com.wdxc.util.* ; import fl.containers.ScrollPane; import flash.display.Shape; import fl.events.ScrollEvent; import flash.external.ExternalInterface; import flash.system.Security; import flash.utils.Timer; import flash.events.TimerEvent ; import com.wdxc.* ; /** * @author luqinglong */ public class Main extends MovieClip { //存储加载进来的图片数据 private var _bitmap:Bitmap ; //进度条 private var _progressbar:TextField ; private var picname:String ; public var _imageCut:ImageCut = new ImageCut() ; //场景引用 public static var SCENE:MovieClip ; public static var _handerState:int = 0 ; public var pelsHint:TextField = new TextField(); public var photoid :String = "0"; public var ir:ImageRotation ; /** * 原图和中图的压缩比例 */ public var picScale :Number = 2 ; public function Main():void { flash.system.Security.allowDomain("*"); photoid = this.loaderInfo.parameters['photoid']; //photoid = "284186" ; SCENE = this; menu_mc.cut_btn.addEventListener(MouseEvent.MOUSE_DOWN, this._imageCut.startCutPic); menu_mc.rotate_btn.addEventListener(MouseEvent.MOUSE_DOWN, rotationHandler) ; checkAvailable(); this.addPelsHint(); startLoadPic(); } /** * 加入象素提醒 */ private function addPelsHint():void { this.addChild(pelsHint); //pelsHint.text = "象素不够" ; pelsHint.x = 150 ; pelsHint.y = 0 ; pelsHint.height = 20 ; this.pelsHint.width = 350 ; pelsHint.textColor =0xFF0000; } public function setPelsHint(p:Number,hint:String):void { this.pelsHint.text = "像素:" + String(p) + " " + hint ; } private function rotationHandler(e:MouseEvent):void { ir = new ImageRotation() ; ir.x = menu_mc.x ; ir.y = menu_mc.y ; this.stage.addChild(ir); } /** * 得到最低象素值 。 */ /* public function getMaxPels():Number { return this.plength/ 500 ; } */ //public function setPelsScale(p:Number) { //this.plength = p / 500 ; //} public function set bitmap(bp:Bitmap):void { this._bitmap = bp ; } public function get bitmap():Bitmap { return this._bitmap ; } public function startLoadPic():void { var param:URLVariables = new URLVariables() ; var url:String = "/photo/LoaderPhotoServlet"; //var url:String = "http://localhost:8080//photo/LoaderPhotoServlet" ; param.random = Math.floor(Math.random() * 1000); param.photoid = photoid ; //output.text = photoid ; //url += Math.floor(Math.random() * 1000); var request:URLRequest = new URLRequest(url); request.data = param ; var loader :Loader = new Loader(); loader.load(request); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, picLoadCompleteHandler); } /** * 导入二进制完成 * @param e */ private function picLoadCompleteHandler(e:Event):void { /**删除进度条*/ if (Main._handerState == 1||Main._handerState==2) { this.delVagueBg(); delLoadingBar(); calljs(); } Main._handerState = 0 ; /* if (this._bitmap.bitmapData != null) { this._bitmap.bitmapData.dispose() ; //this.removeChild(_bitmap); } */ this._bitmap = new Bitmap() ; var loader:Loader = e.target.loader as Loader; var _bitmapdata:BitmapData = new BitmapData(loader.width, loader.height); _bitmapdata.draw(loader); /** * 判断横版照片,竖版照片 */ /* if ( loader.height > loader.width) { //竖版照片 this.cutscaleFlag = Constant.VERTICAL ; } */ this._bitmap.bitmapData = _bitmapdata; this.addChild(_bitmap); this.reset() ; //设置原图引用 this._imageCut.bitmap = this._bitmap ; this.addChild(this._imageCut); e.currentTarget.removeEventListener(Event.COMPLETE, picLoadCompleteHandler); } /** * 删除以前的Bitmapt对象,注入新的进去 。 */ public function removeBitmap():void { this.removeChild(_bitmap); } public function reset():void { this._bitmap.x = (Constant.LEFT_AREA_WIDTH-_bitmap.width)/2 ; this._bitmap.y = (Constant.SCRENE_HEIGHT - _bitmap.height) / 2 ; } public function checkAvailable():void { if (ExternalInterface.available){ try { ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript); if (checkJavaScriptReady()) { //trace("JavaScript is ready.\n"); } else { //trace("JavaScript is not ready, creating timer.\n"); var readyTimer:Timer = new Timer(100, 0); readyTimer.addEventListener(TimerEvent.TIMER, timerHandler); readyTimer.start(); } }catch (error:SecurityError) { //trace("A SecurityError occurred: " + error.message + "\n"); //output.text = "error1"; }catch (error:Error) { //trace("An Error occurred: " + error.message + "\n"); } }else{ //trace("External interface is not available for this container."); } } private function timerHandler(event:TimerEvent):void { var isReady:Boolean = checkJavaScriptReady(); //output.appendText("123"); if (isReady) { //trace("JavaScript is ready.\n"); Timer(event.target).stop(); } } private function receivedFromJavaScript(pid:String, plength:Number):void { //pelsHint.text = pid + "==" + plength ; this.photoid = pid ; //设置中图和原图的像素比 this.picScale = plength/500 ; //this._bitmap.bitmapData.dispose(); //output.text = value ; removeBitmap(); // 点击了裁剪按钮时 if (Main._handerState == 5) { _imageCut.removeCutMenu(); } // 裁剪时候单击保存时候 else if (Main._handerState == 6) { _imageCut.removeCutMenu(); _imageCut.removeHint(); } else if (Main._handerState == 10) { ir.remove(); } //this._bitmap = null ; startLoadPic(); } private function checkJavaScriptReady():Boolean { var isReady:Boolean = ExternalInterface.call("isReady"); return isReady; } public function calljs():void { if (ExternalInterface.available) { ExternalInterface.call("rationAndCropComplete", "123"); } } public var _vaguebg:Sprite ; public function addVagueBg():void { _vaguebg = new Sprite() ; _vaguebg.graphics.beginFill(0x000000); _vaguebg.graphics.drawRect(0, 0, 770, 530); _vaguebg.graphics.endFill(); _vaguebg.alpha = 0.5; this.addChild(_vaguebg); } public function delVagueBg():void { this.removeChild(_vaguebg); } public var loadingbar:Sprite ; public function addLoadingBar():void { loadingbar = new LoadingBar(); this.addChild(loadingbar) ; loadingbar.x = 200 ; loadingbar.y = 150 ; } public function delLoadingBar():void { this.removeChild(loadingbar); } } }
代码二:
package com.wdxc { import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.* ; import flash.display.* ; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import flash.printing.PrintJob; import flash.ui.Mouse ; //import flash.utils.Timer; import flash.utils.* ; import com.wdxc.Constant ; import fl.controls.* ; /** * 图像裁剪 * @author luqinglong */ public class ImageCut extends Sprite{ //原始图像数据数据 private var _bitmap:Bitmap ; //裁剪区域 private var _rect:Sprite ; //裁剪控制菜单 private var _cutMenu:CutMenu ; //拖动时光标图形 private var _cursor1:Sprite ; //拉伸时光标图形 private var _cursor2:Sprite ; //记录鼠标信息, private var _mouseInfo:MouseInfo = new MouseInfo() ; //鼠标按下时,保存绘制矩形的信息 private var _tempObj:Object = new Object() ; //预览时,临时保存图片数据 private var _tempBitmapData:BitmapData ; private var bg1:Sprite ;//预览加载背景时用,覆盖菜单 //模糊背景 private var _vaguebg:Sprite ; //裁剪比例 private var _cutScale:Number = 0 ; //宽和高度裁剪比例 public var cutscaleFlag:int = Constant.HORIZONTAL; public var minPels:Number = 800 * 600; private var scaleInfo:String = "0"; public function ImageCut() { } /** * 创建光标,并使其不可见 。 */ private function createCursor():void { _cursor1 = new Cursor1() ; _cursor1.x = mouseX ; _cursor1.y = mouseY ; _cursor1.visible = false ; _cursor2 = new Cursor2() ; _cursor2.x = mouseX ; _cursor2.y = mouseY ; _cursor2.visible = false ; this.addChild(_cursor1); this.addChild(_cursor2) ; } /** * 初始化,裁剪控制菜单 */ private function createCutMenu():void { //显示像素提醒 ; Main.SCENE.pelsHint.visible = true ; _cutMenu = new CutMenu(); _cutMenu.x = Main.SCENE.menu_mc.x ; _cutMenu.y = Main.SCENE.menu_mc.y ; this.addChild(_cutMenu); _cutMenu.cutok_btn.addEventListener(MouseEvent.CLICK, saveHint) ; _cutMenu.cutcancle_btn.addEventListener(MouseEvent.CLICK, cutCancle) ; _cutMenu.preview_btn.addEventListener(MouseEvent.CLICK, cutPreview) ; _cutMenu.rd5_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd6_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd62_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd7_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd8_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd10_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd12_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd16_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd18_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd20_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd24_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd30_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd40_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd0_mc.addEventListener(MouseEvent.CLICK, scaleSelectHandler) ; } /** * 创建裁剪框 */ private function createCutRect():void { _rect = new Sprite(); _rect.x = _bitmap.x ; _rect.y = _bitmap.y ; /***设置裁剪区域边框样式*/ _rect.graphics.lineStyle(Constant.BORDER, 0xFF0000, 0.8, true, LineScaleMode.NONE, CapsStyle.ROUND); _rect.graphics.beginFill(0xCCFF00,0); _rect.graphics.drawRect(0,0,_bitmap.width-20,_bitmap.height-20); _rect.graphics.endFill(); this.addChild(_rect); } public function set bitmap(bp:Bitmap):void { this._bitmap = bp ; } public function get bitmap():Bitmap { return this._bitmap ; } /**** * 开始裁剪。初始化裁剪工具。 * @param e */ public function startCutPic(e:MouseEvent):void { /** * 判断横版照片,竖版照片 */ if ( _bitmap.height > _bitmap.width) { //竖版照片 this.cutscaleFlag = Constant.VERTICAL ; } else { this.cutscaleFlag = Constant.HORIZONTAL ; } Main._handerState = 5; //cutpicing(); this.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler) ; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler) ; this.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler) ; this.createCutMenu() ; this.createCutRect() ; this.createCursor() ; //_cutMenu.RadioButtonGroup1.addEventListener(Event.CHANGE, changeHandler); } private function changeHandler(e:Event):void { //RadionButton = e.target as RadionButton ; trace(123); } /** * 比例裁剪 */ private function scaleSelectHandler(e:MouseEvent):void { var rb:RadioButton = e.target as RadioButton; //为横排照片 switch(rb.value) { case "5" : this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(5 / 3.5):(3.5 / 5) ; scaleInfo = "5 : 3.5"; this.minPels = 800 * 600 ; break ; case "6" : this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(3 / 2):(2 / 3) ; scaleInfo = "3 : 2"; this.minPels = 1024 * 768 ; break ; case "62": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(4 / 3):(3 / 4) ; scaleInfo = "4 : 3"; this.minPels = 1024 * 768 ; break ; case "7" : this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(7 / 5):(5 / 7) ; scaleInfo = "7 : 5"; this.minPels = 1280 * 960 ; break ; case "8" : this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(4 / 3):(3 / 4) ; scaleInfo = "4 : 3"; this.minPels = 1280 * 960 ; break ; case "10": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(5 / 4):(4 / 5) ; scaleInfo = "5 : 4"; this.minPels = 1600 * 1200 ; break ; case "12": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(6 / 5):(5 / 6) ; scaleInfo = "6 : 5"; this.minPels = 1600 * 1200 ; break ; case "16": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(4 / 3):(3 / 4) ; this.minPels = 2048 * 1953 ; scaleInfo = "4 : 3"; break ; case "18": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(3 / 2):(2 / 3) ; this.minPels = 2048 * 1953 ; scaleInfo = "3 : 2"; break ; case "20": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(5 / 4):(4 / 5) ; this.minPels = 2048 * 1953 ; scaleInfo = "5 : 4"; break ; case "24": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(6 / 5):(5 / 6) ; this.minPels = 2048 * 1953 ; scaleInfo = "6 : 5"; break ; case "30": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(5 / 4):(4 / 5) ; this.minPels = 2048 * 1953 ; scaleInfo = "5 : 4"; break ; case "40": this._cutScale = (this.cutscaleFlag == Constant.HORIZONTAL)?(4 / 3):(3 / 4) ; this.minPels = 2048 * 1953 ; scaleInfo = "4 : 3"; break case "0": this._cutScale = 0; this.minPels = 800 * 600 ; scaleInfo = "0"; break ; } this._rect.graphics.clear(); this._rect.x = _bitmap.x ; this._rect.y = _bitmap.y ; _rect.graphics.lineStyle(Constant.BORDER, 0xFF0000, 0.8, true, LineScaleMode.NONE, CapsStyle.ROUND); _rect.graphics.beginFill(0xCCFF00, 0); if (this._cutScale == 0) { _rect.graphics.drawRect(0, 0, _bitmap.width-20,_bitmap.height-20); }else { var w = _bitmap.width ; var h = w / this._cutScale ; /*按比例显示最大尺寸*/ if (h < _bitmap.height) { _rect.graphics.drawRect(0,0,w,h); }else { _rect.graphics.drawRect(0,0,_bitmap.height*this._cutScale,_bitmap.height); } } _rect.graphics.endFill(); } private function cutCancle(e:MouseEvent):void { Main._handerState = 0 ; removeCutMenu(); } /** * 保存裁剪应用 */ private function cutApplication(e:MouseEvent):void { // 保存裁剪 导入条 Main.SCENE.addLoadingBar(); var server :ImageService = new ImageService(); server.photoid = Main.SCENE.photoid ; var tempx:Number = Math.round(_rect.x - this._bitmap.x); var tempy:Number = Math.round(_rect.y - this._bitmap.y) ; server.submitCut(tempx, tempy, Math.round(_rect.width), Math.round(_rect.height),this.scaleInfo); this.removeCutMenu(); _cutSaveHint.removeEventListener(MouseEvent.CLICK, removeHintHandler); _cutSaveHint.removeEventListener(MouseEvent.CLICK, cutApplication); this.stage.removeChild(_cutSaveHint); Main._handerState = 1 ; //得到长边 var ml = _rect.width > _rect.height?_rect.width:_rect.height ; //重新计算中图和大图的比例 Main.SCENE.picScale = Main.SCENE.picScale * ml/500 ; } public var _cutSaveHint:CutSaveHint ; /** * 保存时候提示说明 * @param e */ private function saveHint(e:MouseEvent):void { // = 背景和提示同时存在 Main._handerState = 6 ; Main.SCENE.addVagueBg(); _cutSaveHint = new CutSaveHint(); _cutSaveHint.x = (Constant.LEFT_AREA_WIDTH-_cutSaveHint.width)/2 ; _cutSaveHint.y = 200 ; this.stage.addChild(_cutSaveHint); _cutSaveHint.ok_btn.addEventListener(MouseEvent.CLICK, cutApplication); _cutSaveHint.cancle1_btn.addEventListener(MouseEvent.CLICK,removeHintHandler); this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler) ; } private function removeHintHandler(e:MouseEvent):void { removeHint(); } public function removeHint():void { //单击裁剪 Main._handerState = 5 ; //删除提示按钮的监听器 _cutSaveHint.removeEventListener(MouseEvent.CLICK, removeHintHandler); _cutSaveHint.removeEventListener(MouseEvent.CLICK, cutApplication); this.stage.removeChild(_cutSaveHint); //戍边回复监听移动 this.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler) ; Main.SCENE.delVagueBg(); } /** * 裁剪时预览 * @param e */ private function cutPreview(e:MouseEvent):void { bg1 = new Sprite() ; bg1.graphics.beginFill(0x000000); bg1.graphics.drawRect(0, 0, 770, 530); bg1.graphics.endFill(); bg1.alpha = 0; bg1.x = Constant.LEFT_AREA_WIDTH+Constant.MIDDLE_AREA_WIDTH ; this.addChild(bg1); //b保存一份副本,预览时候来用。 _tempBitmapData = this._bitmap.bitmapData.clone() ; //存放裁剪出的新图片 var cutbitmapdata:BitmapData = new BitmapData(Math.floor(_rect.width),Math.ceil(_rect.height)) ; //坐标转化,把坐标移到裁剪区域的位置,宽度和高度在cutbitmapdata里指定。 var matrix:Matrix = new Matrix(1, 0, 0, 1, -Math.floor(_rect.x-_bitmap.x), -Math.floor(_rect.y-_bitmap.y)); cutbitmapdata.draw(this._bitmap.bitmapData, matrix); this._bitmap.bitmapData.dispose() ; this._bitmap.bitmapData = cutbitmapdata ; this._rect.visible = false ; Main.SCENE.reset(); setTimeout(previewCompletehandler, 2000) ; } private function previewCompletehandler():void { this._bitmap.bitmapData.dispose(); this._bitmap.bitmapData = this._tempBitmapData ; Main.SCENE.reset(); this._rect.visible = true ; this.removeChild(bg1) ; } /** * 删除裁剪控制菜单 */ public function removeCutMenu():void { //恢复原值 Main._handerState = 0 ; //象素不提醒 Main.SCENE.pelsHint.visible = false ; _cutMenu.cutok_btn.removeEventListener(MouseEvent.MOUSE_DOWN, cutApplication); _cutMenu.cutcancle_btn.removeEventListener(MouseEvent.MOUSE_DOWN, cutCancle) ; /*删除裁剪比例监听*/ _cutMenu.rd5_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd6_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd62_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd7_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd8_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd10_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd12_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd16_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd18_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd20_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd24_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd30_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd40_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; _cutMenu.rd0_mc.removeEventListener(MouseEvent.CLICK, scaleSelectHandler) ; this._cutScale = 0 ; this.stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler) ; this.stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler) ; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler) ; this.removeChild(_cutMenu) ; this.removeChild(_rect) ; this.removeChild(_cursor1); this.removeChild(_cursor2) ; } /** * 鼠标按下处理 * @param e */ private function mouseDownHandler(e:MouseEvent):void { /*保存按下前状态**/ this._tempObj.width = _rect.width-Constant.BORDER ; this._tempObj.height = _rect.height-Constant.BORDER ; this._tempObj.x = _rect.x ; this._tempObj.y = _rect .y ; /*鼠标为按下状态*/ this._mouseInfo.state = Constant.MOUSE_DOWN ; } private function mouseUpHandler(e:MouseEvent):void { _rect.stopDrag(); /*状态设置为弹起状态**/ this._mouseInfo.state = Constant.MOUSE_UP ; } /** * 鼠标移动 * @param e */ private function mouseMoveHandler(e:MouseEvent):void { Mouse.hide() ; this._cursor1.visible = false ; this._cursor2.visible = false ; /*拖动左边界*/ if (_mouseInfo.isStartLeftDrag()) { this.resetCursorPosition(Constant.CURSOR_HORIZONTAL) ; this.repaint(Constant.LEFT); } /*拖动右边界*/ else if(_mouseInfo.isStartRightDrag()) { this.resetCursorPosition(Constant.CURSOR_HORIZONTAL); this.repaint(Constant.RIGHT); } /*拖动上边界*/ else if(_mouseInfo.isStartUpDrag()) { this.resetCursorPosition(Constant.CURSOR_VERTICAL); this.repaint(Constant.UP); } /*拖动下边界*/ else if(_mouseInfo.isStartDownDrag()) { this.resetCursorPosition(Constant.CURSOR_VERTICAL); this.repaint(Constant.DOWN); } /*拖动整个区域*/ else if (_mouseInfo.isStartMiddleDrag()) { this.resetCursorPosition(Constant.CURSOR_MOVE); this.dragHandler(); } /*拖动左上角*/ else if (_mouseInfo.isStratLeftUPDrag()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_LEFT) ; this.repaint(Constant.LEFT_UP) ; } /*拖动左下角*/ else if (_mouseInfo.isStratLeftDownDrag()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_RIGHT) ; this.repaint(Constant.LEFT_DOWN) ; } /*拖动右上角*/ else if (_mouseInfo.isStratRightUPDrag()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_RIGHT) ; this.repaint(Constant.RIGHT_UP) ; } /*拖动右下角*/ else if (_mouseInfo.isStratRightDownDrag()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_LEFT) ; this.repaint(Constant.RIGHT_DOWN) ; } /*鼠标在左上角**/ else if (isLeftUpAngle()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_LEFT); this._mouseInfo.position = Constant.LEFT_UP ; } /*鼠标在左下角**/ else if (isLeftDownAngle()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_RIGHT); this._mouseInfo.position = Constant.LEFT_DOWN ; } /*鼠标在右上角**/ else if (isRightUpAngle()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_RIGHT); this._mouseInfo.position = Constant.RIGHT_UP ; } /*鼠标在右下角**/ else if (isRightDownAngle()) { this.resetCursorPosition(Constant.CURSOR_DIAGONAL_LEFT); this._mouseInfo.position = Constant.RIGHT_DOWN ; } /*鼠标在左边界**/ else if (isLeftEdge()) { this.resetCursorPosition(Constant.CURSOR_HORIZONTAL); this._mouseInfo.position = Constant.LEFT ; } /*鼠标在右边界**/ else if (isRightEdge()) { this.resetCursorPosition(Constant.CURSOR_HORIZONTAL); this._mouseInfo.position = Constant.RIGHT ; } /*鼠标在上边界**/ else if (isUpEdge()) { this.resetCursorPosition(Constant.CURSOR_VERTICAL); this._mouseInfo.position = Constant.UP ; } /*鼠标在下边界**/ else if (isDownEdge()) { this.resetCursorPosition(Constant.CURSOR_VERTICAL); this._mouseInfo.position = Constant.DOWN ; } /* 鼠标在裁剪区域里。*/ else if (this.isInCutRect()) { this.resetCursorPosition(Constant.CURSOR_MOVE); this._mouseInfo.position = Constant.MIDDLE ; } else { Mouse.show () ; } e.updateAfterEvent(); /*象素提示**/ this.pelsHint(); } private function pelsHint():void { var p = _rect.width * _rect.height * Main.SCENE.picScale * Main.SCENE.picScale ; p = Math.round(p); if ( p < this.minPels) { Main.SCENE.setPelsHint(p,"像素太低,继续裁剪将会影响照片的冲印质量。"); }else { Main.SCENE.setPelsHint(p,""); } } /** * 重绘裁剪区域 。 * @param state */ private function repaint(state:uint):void { this._rect.graphics.clear() ; _rect.graphics.lineStyle(Constant.BORDER, 0xFF0000, 0.8, true, LineScaleMode.NONE, CapsStyle.ROUND); _rect.graphics.beginFill(0xCCFF00, 0); //var h:Number = 0 ; //var w:Number = 0 ; switch(state) { case Constant.LEFT: this.leftDragHandler() ; break; case Constant.RIGHT: this.rightDragHandler(); break ; case Constant.UP: this.upDragHandler(); break ; case Constant.DOWN: /*下端拖动*/ downDragHandler(); break; case Constant.LEFT_UP: this.leftUpDragHandler() ; break; case Constant.LEFT_DOWN: /*左下角拖动*/ this.leftDownDragHandler(); break; case Constant.RIGHT_UP: /*右上角拖动*/ this.rightUpDragHandler(); break; case Constant.RIGHT_DOWN: /*右下角拖动*/ this.rightDownDragHandler(); break; } _rect.graphics.endFill(); } /*左端拖动处理*/ private function leftDragHandler():void { var w = 0 ; var h = 0; if(this._cutScale!=0) { _rect.x = mouseX < _bitmap.x?_bitmap.x:mouseX ; _rect.x = _rect.x >= (_tempObj.width + _tempObj.x)?(_tempObj.width + _tempObj.x):_rect.x ; w = _tempObj.width + _tempObj.x - _rect.x ; h = w / this._cutScale ; var h2 = this._bitmap.height+this._bitmap.y - this._tempObj.y ; if(h>=h2){ _rect.x = this._tempObj.x + this._tempObj.width -h2*this._cutScale; w = _tempObj.width + _tempObj.x - _rect.x ; _rect.graphics.drawRect(0, 0, w, h2 ); } else { _rect.graphics.drawRect(0, 0, w , h ); } } else { /*左端拖动*/ _rect.x = mouseX < _bitmap.x?_bitmap.x:mouseX ; _rect.x = _rect.x >= (_tempObj.width + _tempObj.x)?(_tempObj.width + _tempObj.x):_rect.x ; _rect.graphics.drawRect(0, 0, _tempObj.width + _tempObj.x - _rect.x, _tempObj.height); } } private function rightDragHandler():void { var w:Number = 0 ; var h:Number = 0 ; if (this._cutScale != 0) { /*右端拖动*/ w = mouseX > (w = (_bitmap.x + _bitmap.width))?w:mouseX ; w = w <= this._tempObj.x?_tempObj.x:w ; //宽度 w = w -this._tempObj.x ; h = w/ this._cutScale ; _rect.y = _tempObj.height + _tempObj.y - h; if (_rect.y < _bitmap.y) { h = _tempObj.height + _tempObj.y -_bitmap.y ; _rect.y = _bitmap.y ; w = h * this._cutScale ; //w = w - this._tempObj.x ; //trace("h=="+h); } //trace("_rect.y=="+_rect.y+" bitmap.y=="+_bitmap.y); _rect.graphics.drawRect(0, 0, w,h); } else { /*右端拖动,任意裁剪*/ w = mouseX > (w = (_bitmap.x + _bitmap.width))?w:mouseX ; w = w <= this._tempObj.x?_tempObj.x:w ; _rect.graphics.drawRect(0, 0, w -this._tempObj.x, _tempObj.height); } } /** * 上端拖动处理 */ private function upDragHandler():void { if (this._cutScale != 0) { /*按一定比例裁剪**/ _rect.y = (mouseY < _bitmap.y)?_bitmap.y:mouseY; _rect.y = _rect.y >=(_tempObj.height + _tempObj.y)?(_tempObj.height + _tempObj.y): _rect.y ; var h = _tempObj.height + _tempObj.y-_rect.y ; var w = h * this._cutScale ; _rect.x = _tempObj.x + _tempObj.width - w ; /** * 超过最左边 */ if (_rect.x < _bitmap.x) { w = _tempObj.x + _tempObj.width - _bitmap.x ; _rect.x = _bitmap.x ; h = w / this._cutScale ; _rect.y = _tempObj.y + _tempObj.height - h ; } _rect.graphics.drawRect(0, 0,w,h); }else { /*任意尺寸裁剪**/ _rect.y = (mouseY < _bitmap.y)?_bitmap.y:mouseY; _rect.y = _rect.y >=(_tempObj.height + _tempObj.y)?(_tempObj.height + _tempObj.y): _rect.y ; _rect.graphics.drawRect(0, 0, _tempObj.width,_tempObj.height+_tempObj.y-_rect.y); } } /** * 下端拖动处理 */ private function downDragHandler():void { var h = 0 ; var w = 0; if (this._cutScale != 0) { h = mouseY > (h = (_bitmap.y + _bitmap.height))?h:mouseY ; h = h <= this._tempObj.y?_tempObj.y:h ; //高度 h = h - _tempObj.y ; w = h * this._cutScale ; if ((w + _tempObj.x) >= (_bitmap.width+_bitmap.x)) { w = _bitmap.x + _bitmap.width - _rect.x ; h = w / this._cutScale ; } _rect.graphics.drawRect(0, 0, w, h); }else { h = mouseY > (h = (_bitmap.y + _bitmap.height))?h:mouseY ; h = h <= this._tempObj.y?_tempObj.y:h ; _rect.graphics.drawRect(0, 0, _tempObj.width, h-_tempObj.y); } } /** * 左上拖动处理 */ private function leftUpDragHandler():void { if (this._cutScale != 0) { this.upDragHandler(); }else { /*左上角拖动*/ _rect.x = mouseX <= _bitmap.x?_bitmap.x:mouseX ; _rect.y = (mouseY <= _bitmap.y)?_bitmap.y:mouseY; var w = _tempObj.width + _tempObj.x ; var h = _tempObj.height + _tempObj.y ; _rect.x = _rect.x >= (w)?(w):_rect.x ; _rect.y = _rect.y >=(h)?(h): _rect.y ; _rect.graphics.drawRect(0, 0, w-_rect.x,h-_rect.y); } } /** * 左下按比例拖动处理 */ private function leftDownDragHandler():void { if (this._cutScale != 0) { this.leftDragHandler(); }else { _rect.x = mouseX <= _bitmap.x?_bitmap.x:mouseX ; _rect.x = _rect.x >= (_tempObj.width + _tempObj.x)?(_tempObj.width + _tempObj.x):_rect.x ; var h = mouseY > (h = (_bitmap.y + _bitmap.height))?h:mouseY ; h = h <= this._tempObj.y?_tempObj.y:h ; _rect.graphics.drawRect(0, 0, _tempObj.width + _tempObj.x - _rect.x,h-_tempObj.y); } } private function rightDownDragHandler():void { if (this._cutScale != 0) { this.downDragHandler(); }else { var w = mouseY > (w = (_bitmap.y + _bitmap.height))?w:mouseY ; w = w <= this._tempObj.y?_tempObj.y:w ; var h = mouseX > (h = (_bitmap.x + _bitmap.width))?h:mouseX ; h = h <= this._tempObj.x?_tempObj.x:h _rect.graphics.drawRect(0, 0, h -this._tempObj.x, w-_tempObj.y); } } private function rightUpDragHandler():void { if (this._cutScale != 0) { this.rightDragHandler(); }else { _rect.y = (mouseY < _bitmap.y)?_bitmap.y:mouseY; _rect.y = _rect.y >=(_tempObj.height + _tempObj.y)?(_tempObj.height + _tempObj.y): _rect.y ; var h = mouseX > (h = (_bitmap.x + _bitmap.width))?h:mouseX ; h = h <= this._tempObj.x?_tempObj.x:h _rect.graphics.drawRect(0, 0, h -this._tempObj.x,_tempObj.height+_tempObj.y-_rect.y); } } /** * 重新设置光标的位置,形状 。 * @param p */ private function resetCursorPosition(cursor:uint):void { /*移动状态*/ if (cursor == Constant.CURSOR_MOVE) { this._cursor1.x = mouseX ; this._cursor1.y = mouseY ; this._cursor1.visible = true ; return ; } this._cursor2.x = mouseX ; this._cursor2.y = mouseY ; this._cursor2.visible = true ; switch(cursor) { case Constant.CURSOR_HORIZONTAL: _cursor2.rotation = 0 ; break ; case Constant.CURSOR_VERTICAL: _cursor2.rotation = 90 ; break ; case Constant.CURSOR_DIAGONAL_LEFT: _cursor2.rotation = 45 ; break ; case Constant.CURSOR_DIAGONAL_RIGHT: _cursor2.rotation = 135 ; break ; } } /** * 拖动 裁剪区域 */ private function dragHandler():void { //裁剪区域移动范围,不能超过原图区域。 var _rectangle:Rectangle = new Rectangle(); _rectangle.x = _bitmap.x ; _rectangle.y = _bitmap.y ; _rectangle.width = this._bitmap.width-_rect.width ; _rectangle.height = this._bitmap.height-_rect.height ; _rect.startDrag(false, _rectangle); } /** * 检查光标是否在左边界上 * @return boolean */ private function isLeftEdge():Boolean { /**检查左边界*/ if (mouseX>=(this._rect.x - Constant.ACTIVERANGE) && mouseX<=(this._rect.x + Constant.ACTIVERANGE) && mouseY>this._rect.y && mouseY<(this._rect.y +this._rect.height)) { return true ; } return false ; } /** * 检查光标是否在右边界上 */ private function isRightEdge():Boolean { if (mouseX>=(this._rect.x + this._rect.width - Constant.ACTIVERANGE) && mouseX<=(this._rect.x+this._rect.width + Constant.ACTIVERANGE) & mouseY>this._rect.y&& mouseY<(this._rect.y+this._rect.height)) { return true ; } return false ; } /** * 检查光标是否在上边界上 。 * @return boolean . */ private function isUpEdge():Boolean { if (mouseX > this._rect.x && mouseX < (this._rect.x + _rect.width) & mouseY > (_rect.y - Constant.ACTIVERANGE) && mouseY<(_rect.y+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 检查光标是否在下边界上 。 * @return boolean . */ private function isDownEdge():Boolean { if (mouseX > this._rect.x && mouseX < (this._rect.x + _rect.width) & mouseY > (_rect.y + _rect.height - Constant.ACTIVERANGE) && mouseY<(_rect.y+_rect.height+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 检查光标是否在左上角 。 * @return boolean . */ private function isLeftUpAngle():Boolean { if (mouseX > (this._rect.x-Constant.ACTIVERANGE) && mouseX < (this._rect.x +Constant.ACTIVERANGE) & mouseY > (_rect.y - Constant.ACTIVERANGE) && mouseY<(_rect.y+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 检查光标是否在左下角 。 * @return boolean . */ private function isLeftDownAngle():Boolean { if (mouseX > (this._rect.x-Constant.ACTIVERANGE) && mouseX < (this._rect.x +Constant.ACTIVERANGE) & mouseY > (_rect.y+_rect.height - Constant.ACTIVERANGE) && mouseY<(_rect.y+_rect.height+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 检查光标是否在右上角 。 * @return boolean . */ private function isRightUpAngle():Boolean { if (mouseX > (this._rect.x + _rect.width - Constant.ACTIVERANGE) && mouseX < (this._rect.x+_rect.width +Constant.ACTIVERANGE) & mouseY > (_rect.y- Constant.ACTIVERANGE) && mouseY<(_rect.y+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 检查光标是否在右下角 。 * @return boolean . */ private function isRightDownAngle():Boolean { if (mouseX > (this._rect.x + _rect.width - Constant.ACTIVERANGE) && mouseX < (this._rect.x+_rect.width +Constant.ACTIVERANGE) & mouseY > (_rect.y+_rect.height- Constant.ACTIVERANGE) && mouseY<(_rect.y+_rect.height+Constant.ACTIVERANGE)) { return true ; } return false ; } /** * 判断光标标是否在裁剪区域里面 * @return boolean */ private function isInCutRect():Boolean { if (mouseX>(this._rect.x + Constant.ACTIVERANGE) && mouseX<(this._rect.x + this._rect.width - Constant.ACTIVERANGE) & mouseY>(this._rect.y + Constant.ACTIVERANGE) && mouseY<(this._rect.y + this._rect.height -Constant.ACTIVERANGE)) { return true ; } return false ; } } }
代码三:
package com.wdxc { import flash.display.MovieClip; import flash.display.Sprite import flash.display.* ; import flash.events.MouseEvent ; import flash.geom.Matrix ; /** * 图片旋转 * @author luqinglong */ public class ImageRotation extends Sprite{ private var _bitmap:Bitmap ; private var _x:Number ; private var _y:Number ; private var _w:Number ; private var _h:Number ; //private var _angle:Number ; public function ImageRotation() { _bitmap = Main.SCENE.bitmap ; _x = _bitmap.x ; _y = _bitmap.y ; _w = _bitmap.width ; _h = _bitmap.height ; cancle_btn.addEventListener(MouseEvent.CLICK, cancleHandler); left_btn.addEventListener(MouseEvent.CLICK, leftRotationHandler); right_btn.addEventListener(MouseEvent.CLICK, rightRotationHandler) ; save_btn.addEventListener(MouseEvent.CLICK, applicationHandler); //单击了旋转 Main._handerState = 10 ; //go_cut_btn.addEventListener(MouseEvent.CLICK, goCutMenu); } /* private function goCutMenu(e:MouseEvent):void { this.remove(); Main.SCENE._imageCut.cutpicing(); }*/ /** * 取消操作 * @param e */ private function cancleHandler(e:MouseEvent):void { //Main.SCENE.reset() ; Main._handerState = 0 ; this.remove(); } public function remove():void { Main.SCENE.bitmap.x = _x ; Main.SCENE.bitmap.y = _y ; Main.SCENE.bitmap.rotation = 0 ; left_btn.removeEventListener(MouseEvent.CLICK, leftRotationHandler); cancle_btn.removeEventListener(MouseEvent.CLICK, cancleHandler) ; save_btn.removeEventListener(MouseEvent.CLICK, applicationHandler); //go_cut_btn.removeEventListener(MouseEvent.CLICK, goCutMenu); this.stage.removeChild(this) ; } private function applicationHandler(e:MouseEvent):void { Main.SCENE.addVagueBg(); Main.SCENE.addLoadingBar(); var server :ImageService = new ImageService(); server.photoid = Main.SCENE.photoid ; server.submitRotation(fixAng( _bitmap.rotation) ); left_btn.removeEventListener(MouseEvent.CLICK, leftRotationHandler); cancle_btn.removeEventListener(MouseEvent.CLICK, cancleHandler) ; save_btn.addEventListener(MouseEvent.CLICK, applicationHandler); this.stage.removeChild(this) ; Main._handerState = 2 ; } /** * 左旋转处理 * @param e */ private function rightRotationHandler(e:MouseEvent):void { var _angle = fixAng(_bitmap.rotation) ; if (_angle== 0) { _bitmap.x = _x + (_h + _w) / 2 ; _bitmap.y = _y+(_h - _w) / 2 ; } else if (_angle == 90) { _bitmap.x = _x + _w ; _bitmap.y = _y + _h ; } else if (_angle== 180) { _bitmap.x = _x - (_h - _w) / 2; _bitmap.y = _y + (_w+_h)/2 ; } else if (_angle == 270) { _bitmap.x = _x ; _bitmap.y = _y; } _bitmap.rotation += 90 ; _angle = fixAng( _bitmap.rotation) ; trace("angle="+_angle); } private function leftRotationHandler(e:MouseEvent):void { var _angle = fixAng( _bitmap.rotation) ; if (_angle == 0) { _bitmap.x = _x - (_h - _w) / 2; _bitmap.y = _y + (_w+_h)/2 ; } else if (_angle == 270) { _bitmap.x = _x + _w ; _bitmap.y = _y + _h ; } else if (_angle == 180 ){ _bitmap.x = _x + (_h + _w) / 2 ; _bitmap.y = _y+(_h - _w) / 2 ; } else if (_angle == 90) { _bitmap.x = _x ; _bitmap.y = _y; } _bitmap.rotation -= 90 ; trace("angle="+_angle); } /** * 转换成标准角度 * @param _ang */ public static function fixAng (_ang:Number){ var _ang:Number = _ang % 360; var ang:Number = _ang % 360 < 0 ? _ang + 360 : _ang; return ang; } } }
代码四:
package com.wdxc { import com.wdxc.util.JPGEncoder; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod ; import flash.net.URLVariables; /** * 与服务端通信 * @author luqinglong */ public class ImageService { private var url:String = "/photo/PhotoEditServlet" ; //private var url:Stri
评论
4 楼
haichuan11
2012-06-07
这个…… 代码不全真的是让人很憋屈的感觉啊
3 楼
jeson_jin
2008-10-30
没有Constant类啊
2 楼
hereson
2008-10-10
代码四:
package com.wdxc {
import com.wdxc.util.JPGEncoder;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod ;
import flash.net.URLVariables;
/**
* 与服务端通信
* @author luqinglong
*/
public class ImageService {
private var url:String = "/photo/PhotoEditServlet" ;
//private var url:String = "http://localhost:8080//photo/PhotoEditServlet" ;
private var _photoid:String ;
//?photoid=267005
/**
* 照片id
*/
public function set photoid(id:String):void {
this._photoid = id ;
}
public function get photoid():String {
return this._photoid ;
}
public function ImageService() {
}
/**
*
* @param type 判断是否裁剪或者旋转
* @param photoid 照片id
* @param x
* @param y
* @param width
* @param height
*/
public function submitCut(x:Number,y:Number,width:Number,height:Number,scale:String):void {
//url = url+"?"
//url = url+"?radom="+Math.floor(Math.random()*1000)
var request:URLRequest = new URLRequest(url);
var param:URLVariables = new URLVariables();
param.random = Math.floor(Math.random() * 100);
param.photoid = _photoid ;
param.type = Constant.OPERATE_CUT ;
param.photoid = photoid ;
param.scaleInfo = scale ;
param.x = x ;
param.y = y ;
param.width = width ;
param.height = height ;
request.data = param ;
var loader:URLLoader = new URLLoader();
//loader.
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
//loader.addEventListener(Event.)
}
/**
* 保存旋转
* @param ag
*/
public function submitRotation(ag:Number):void {
var request:URLRequest = new URLRequest(url);
var param:URLVariables = new URLVariables();
param.random = Math.floor(Math.random() * 1000);
param.photoid = _photoid ;
param.type = Constant.OPERAT_ROTATION ;
param.photoid = photoid ;
param.angle = ag ;
request.data = param ;
var loader:URLLoader = new URLLoader();
//loader.
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
}
/**
* 对图片编码并提交给服务端保存。
* @param bitmapdata
* @param url
*/
/*
public function submit(bitmapdata:BitmapData, url:String):void {
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
}*/
private function completeHandler(e:Event):void {
Main.SCENE.removeBitmap();
Main.SCENE.startLoadPic();
e.currentTarget.removeEventListener(Event.COMPLETE, completeHandler);
}
}
}
package com.wdxc {
import com.wdxc.util.JPGEncoder;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod ;
import flash.net.URLVariables;
/**
* 与服务端通信
* @author luqinglong
*/
public class ImageService {
private var url:String = "/photo/PhotoEditServlet" ;
//private var url:String = "http://localhost:8080//photo/PhotoEditServlet" ;
private var _photoid:String ;
//?photoid=267005
/**
* 照片id
*/
public function set photoid(id:String):void {
this._photoid = id ;
}
public function get photoid():String {
return this._photoid ;
}
public function ImageService() {
}
/**
*
* @param type 判断是否裁剪或者旋转
* @param photoid 照片id
* @param x
* @param y
* @param width
* @param height
*/
public function submitCut(x:Number,y:Number,width:Number,height:Number,scale:String):void {
//url = url+"?"
//url = url+"?radom="+Math.floor(Math.random()*1000)
var request:URLRequest = new URLRequest(url);
var param:URLVariables = new URLVariables();
param.random = Math.floor(Math.random() * 100);
param.photoid = _photoid ;
param.type = Constant.OPERATE_CUT ;
param.photoid = photoid ;
param.scaleInfo = scale ;
param.x = x ;
param.y = y ;
param.width = width ;
param.height = height ;
request.data = param ;
var loader:URLLoader = new URLLoader();
//loader.
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
//loader.addEventListener(Event.)
}
/**
* 保存旋转
* @param ag
*/
public function submitRotation(ag:Number):void {
var request:URLRequest = new URLRequest(url);
var param:URLVariables = new URLVariables();
param.random = Math.floor(Math.random() * 1000);
param.photoid = _photoid ;
param.type = Constant.OPERAT_ROTATION ;
param.photoid = photoid ;
param.angle = ag ;
request.data = param ;
var loader:URLLoader = new URLLoader();
//loader.
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
}
/**
* 对图片编码并提交给服务端保存。
* @param bitmapdata
* @param url
*/
/*
public function submit(bitmapdata:BitmapData, url:String):void {
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.load(request) ;
loader.addEventListener(Event.COMPLETE, completeHandler) ;
}*/
private function completeHandler(e:Event):void {
Main.SCENE.removeBitmap();
Main.SCENE.startLoadPic();
e.currentTarget.removeEventListener(Event.COMPLETE, completeHandler);
}
}
}
1 楼
hereson
2008-10-10
代码五:
package com.wdxc {
/**
* ...
* @author luqinglong
*/
public class MouseInfo {
/*鼠标左边缘、右边缘等*/
private var _position:uint = 100 ;
/*鼠标状态 按下、放开*/
private var _state :uint = 100;
public function MouseInfo() {
}
public function set position(p:uint):void {
this._position = p ;
}
public function get position():uint {
return this._position ;
}
public function set state(s:uint):void {
this._state = s ;
}
public function get state():uint {
return _state ;
}
/**
* 是否满足对左边进行拖动拉伸的条件。
* @return boolean
*/
public function isStartLeftDrag():Boolean {
if (_position == Constant.LEFT && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartRightDrag():Boolean {
if (_position == Constant.RIGHT && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对上边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartUpDrag():Boolean {
if (_position == Constant.UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对下边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartDownDrag():Boolean {
if (_position == Constant.DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对裁剪区域进行拖动拉伸的条件。
* @return boolean
*/
public function isStartMiddleDrag():Boolean {
if (_position == Constant.MIDDLE && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对左上角拖动拉伸的条件。
* @return boolean
*/
public function isStratLeftUPDrag():Boolean {
if (_position == Constant.LEFT_UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对左下角拖动拉伸的条件。
* @return boolean
*/
public function isStratLeftDownDrag():Boolean {
if (_position == Constant.LEFT_DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右上角拖动拉伸的条件。
* @return boolean
*/
public function isStratRightUPDrag():Boolean {
if (_position == Constant.RIGHT_UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右下角拖动拉伸的条件。
* @return boolean
*/
public function isStratRightDownDrag():Boolean {
if (_position == Constant.RIGHT_DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
}
}
package com.wdxc {
/**
* ...
* @author luqinglong
*/
public class MouseInfo {
/*鼠标左边缘、右边缘等*/
private var _position:uint = 100 ;
/*鼠标状态 按下、放开*/
private var _state :uint = 100;
public function MouseInfo() {
}
public function set position(p:uint):void {
this._position = p ;
}
public function get position():uint {
return this._position ;
}
public function set state(s:uint):void {
this._state = s ;
}
public function get state():uint {
return _state ;
}
/**
* 是否满足对左边进行拖动拉伸的条件。
* @return boolean
*/
public function isStartLeftDrag():Boolean {
if (_position == Constant.LEFT && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartRightDrag():Boolean {
if (_position == Constant.RIGHT && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对上边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartUpDrag():Boolean {
if (_position == Constant.UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对下边界进行拖动拉伸的条件。
* @return boolean
*/
public function isStartDownDrag():Boolean {
if (_position == Constant.DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对裁剪区域进行拖动拉伸的条件。
* @return boolean
*/
public function isStartMiddleDrag():Boolean {
if (_position == Constant.MIDDLE && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对左上角拖动拉伸的条件。
* @return boolean
*/
public function isStratLeftUPDrag():Boolean {
if (_position == Constant.LEFT_UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对左下角拖动拉伸的条件。
* @return boolean
*/
public function isStratLeftDownDrag():Boolean {
if (_position == Constant.LEFT_DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右上角拖动拉伸的条件。
* @return boolean
*/
public function isStratRightUPDrag():Boolean {
if (_position == Constant.RIGHT_UP && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
/**
* 是否满足对右下角拖动拉伸的条件。
* @return boolean
*/
public function isStratRightDownDrag():Boolean {
if (_position == Constant.RIGHT_DOWN && _state == Constant.MOUSE_DOWN) {
return true ;
}
return false ;
}
}
}
发表评论
-
haXe是什么?
2016-01-04 10:50 1085haXe是什么? haXe是一种编程语言,官方网站在 ... -
用EA类图生成AS3代码
2008-10-15 16:18 2730EA(Enterprise Architect)是支持多种流 ... -
变形实例-source
2008-10-15 12:46 1562涂抹原理 橡皮擦原理 import flash.geom.P ... -
Flash(AS3)读取Excel文件
2008-10-09 13:29 5193var excelXml:XML; var loader=ne ... -
AS3 Loading的制作方法
2008-10-09 13:28 6084AS2的时候做LOADING有很多种方法,做起来也得心应手可是 ... -
让"Flash" 写文件(AS3)
2008-09-11 16:23 1809目前,出于安全考虑Flash不支持写文件的操作,在AS3的A ... -
AS3 中的 拖动 及 碰撞 检测
2008-09-11 16:11 2951没有press和release事件 hitTest()被分尸 ... -
As和js通信问题完全解析(解决addcallback失效的问题)
2008-09-11 16:10 3667as和js通信最早用的是fscommand,这个我就不说了,老 ... -
Flash CS3制作Fla形式的组件
2008-06-16 14:45 1405本文为大家介绍如何制作Flash CS3中的[*.fla]形 ... -
AS3图像处理之剪裁、动态选取
2008-06-15 23:25 2263和师傅写C#写的思维混乱,方法变量几乎第一反应就是大写,习惯都 ... -
从界面入手 划分类
2008-06-15 19:25 1298如何将一个项目细化成各个类呢? 1 从一个项目的界面入手,按照 ... -
AS3-DisplayEffect组件
2008-06-14 20:40 2091[AS3]DisplayEffect组件【组件版本】:0.5【 ... -
KTooltip 工具提示组件
2008-06-14 20:38 1047发布一个小工具KTooltip 。这是0.9beta版,出发日 ... -
AS3.0写的一个滚动条【缓动效果】
2008-06-13 16:10 6402package { import flash.d ... -
一个简单的文本滚动条类 as3
2008-06-13 16:04 4404最近一直做会议与AS3有关项目今天花了点时间写了一个可以选择套 ... -
自定义滚动条类
2008-06-13 16:01 2099在平常的开发中,经常需要用到滚动条,今天将滚动条类整理了下,有 ... -
AS3加载机制
2008-06-13 15:03 2224摸了好一阵子,才弄明白AS3.0的加载机制.还是坚持自己的原则 ... -
写了一个Flash的Transition
2008-06-11 10:36 1758写了一个Flash的Transition package { ... -
JavaScript与ActionScript函数相互调用
2008-06-06 15:07 22881、在JavaScript中调用Flex( ... -
传参之事件代理
2008-06-05 10:23 1117有时候我们在调用事件侦听器的时候,需要给它传进相应的参数,这个 ...
相关推荐
### ActionScript 3.0 图片处理新书知识点解析 #### 一、使用绘图API进行矢量线条和图形的创建 在ActionScript 3.0中,绘图API为开发者提供了强大的工具来创建和操作矢量图形。本书将详细介绍如何利用这些API实现...
在本项目中,我们探讨的是如何使用Adobe Flash CS5结合ActionScript 3.0(AS3)开发一个拼图游戏。ActionScript是Flash平台的核心编程语言,它为创建交互式内容提供了强大的支持。以下是关于这个拼图游戏的知识点: ...
5. 图片特效:Flex还允许开发者利用ActionScript 3.0实现自定义的图片特效,例如淡入淡出、旋转、模糊等。可以利用`BitmapData`类对图片进行像素级别的操作。 6. 案例分析:提到的“PicWatcher”可能是一个图片查看...
在ActionScript 3.0中,可以使用`flash.geom.Matrix3D`类来处理3D变换,如旋转、平移和缩放,从而创建3D效果。 2. **3D库**:Flash平台上有许多第三方库,如Papervision3D和Away3D,这些库提供了一套完整的3D渲染和...
7. **AS3的图形API**:ActionScript 3.0提供了强大的图形处理API,如BitmapData类,可以直接处理像素级别操作,实现图片的裁剪、旋转、滤镜等效果。 8. **优化与性能**:考虑到Flash的内存管理和渲染性能,动态显示...
这个压缩包中的“Flex 剪切放大旋转”项目,显然涉及到使用Flex技术来实现图片处理功能,包括上传图片、裁剪、放大和旋转。下面我们将详细探讨这些知识点。 1. **Flex框架**: Flex提供了MXML和ActionScript两种...
在电子相册中,图片的显示、缩放、旋转等效果可以通过数据绑定与图片数据进行联动。 4. **图形渲染**:由于Flex运行在Flash Player上,它能够利用硬件加速进行高效的图形渲染,这使得在电子相册中实现平滑的动画...
5. **图像处理**:图片编辑功能的实现需要对图像处理有深入理解,这涉及到色彩模型(RGB、CMYK等)、滤镜效果(模糊、锐化、扭曲等)、图像操作(裁剪、旋转、缩放等)。在Flex中,可以使用BitmapData类来处理像素...
Flex是一种基于ActionScript 3.0的开发框架,常用于构建富互联网应用程序(RIA)。图像裁剪和剪切功能在Web应用中非常常见,例如在社交媒体平台或在线图片编辑工具中,用户可能需要调整图片大小、裁剪不必要的部分或...
3. **图像处理**:可能涉及到对捕获的图像进行裁剪、旋转、滤镜等操作,这可能需要用到ActionScript的BitmapData类和其他图像处理库。 4. **事件处理**:在用户交互和摄像头操作中,事件驱动编程是核心,了解如何...
BitmapData允许开发者直接操作像素,进行缩放、旋转、裁剪等各种图像操作。在图片加载完成后,可以创建一个BitmapData对象,然后通过这个对象实现图片的动态处理。例如,为了实现图片的放大和缩小,可以使用...
标题"BMPDecoder.rar"指的是一个专门用于处理BMP图像文件的解码类,适用于ActionScript 3.0(AS3)编程环境。BMP(Bitmap)是一种常见的位图格式,广泛用于存储数字图像。在AS3中,处理这种格式的图像通常涉及到二...
1. **ActionScript 3.0**:《美女连连看》采用的是AS3版本,这是Flash的一个重要升级,引入了类和面向对象编程的概念,让代码更加结构化和易于维护。开发者可以通过AS3来编写游戏逻辑,如游戏规则判断、计时器、事件...
1. **Flex编程**:Flex是基于ActionScript 3.0的开发环境,它提供了MXML和AS3两种语法来创建用户界面。MXML是一种声明式语言,用于定义UI组件和布局,而AS3则是面向对象的编程语言,用于编写应用逻辑。在照片墙上,...
Flex 3 是 Adobe 的一种基于 ActionScript 3.0 的开源框架,用于构建富互联网应用程序(RIA)。在Flex 3中实现360度全景视图是一项常见的视觉效果技术,它能够提供用户一种沉浸式的浏览体验,让用户仿佛置身于一个全...
- 自定义渲染:可以通过覆盖`updateDisplayList()`方法来自定义图像的渲染方式,实现如裁剪、旋转等效果。 7. **响应式设计**: - 在移动设备或不同分辨率的屏幕上,可以利用Flex4的响应式设计能力,根据屏幕尺寸...
BitmapData对象提供了对像素级别的操作,包括复制、旋转和裁剪。 2. **拼图布局**:拼图块的初始布局通常采用随机打乱的方式,这需要算法支持。可以使用 Fisher-Yates 洗牌算法或者其他随机排序方法实现。 3. **...