- 浏览: 1451491 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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 1076haXe是什么? haXe是一种编程语言,官方网站在 ... -
用EA类图生成AS3代码
2008-10-15 16:18 2724EA(Enterprise Architect)是支持多种流 ... -
变形实例-source
2008-10-15 12:46 1556涂抹原理 橡皮擦原理 import flash.geom.P ... -
Flash(AS3)读取Excel文件
2008-10-09 13:29 5189var excelXml:XML; var loader=ne ... -
AS3 Loading的制作方法
2008-10-09 13:28 6081AS2的时候做LOADING有很多种方法,做起来也得心应手可是 ... -
让"Flash" 写文件(AS3)
2008-09-11 16:23 1804目前,出于安全考虑Flash不支持写文件的操作,在AS3的A ... -
AS3 中的 拖动 及 碰撞 检测
2008-09-11 16:11 2945没有press和release事件 hitTest()被分尸 ... -
As和js通信问题完全解析(解决addcallback失效的问题)
2008-09-11 16:10 3662as和js通信最早用的是fscommand,这个我就不说了,老 ... -
Flash CS3制作Fla形式的组件
2008-06-16 14:45 1397本文为大家介绍如何制作Flash CS3中的[*.fla]形 ... -
AS3图像处理之剪裁、动态选取
2008-06-15 23:25 2258和师傅写C#写的思维混乱,方法变量几乎第一反应就是大写,习惯都 ... -
从界面入手 划分类
2008-06-15 19:25 1292如何将一个项目细化成各个类呢? 1 从一个项目的界面入手,按照 ... -
AS3-DisplayEffect组件
2008-06-14 20:40 2084[AS3]DisplayEffect组件【组件版本】:0.5【 ... -
KTooltip 工具提示组件
2008-06-14 20:38 1040发布一个小工具KTooltip 。这是0.9beta版,出发日 ... -
AS3.0写的一个滚动条【缓动效果】
2008-06-13 16:10 6396package { import flash.d ... -
一个简单的文本滚动条类 as3
2008-06-13 16:04 4400最近一直做会议与AS3有关项目今天花了点时间写了一个可以选择套 ... -
自定义滚动条类
2008-06-13 16:01 2095在平常的开发中,经常需要用到滚动条,今天将滚动条类整理了下,有 ... -
AS3加载机制
2008-06-13 15:03 2220摸了好一阵子,才弄明白AS3.0的加载机制.还是坚持自己的原则 ... -
写了一个Flash的Transition
2008-06-11 10:36 1753写了一个Flash的Transition package { ... -
JavaScript与ActionScript函数相互调用
2008-06-06 15:07 22851、在JavaScript中调用Flex( ... -
传参之事件代理
2008-06-05 10:23 1113有时候我们在调用事件侦听器的时候,需要给它传进相应的参数,这个 ...
相关推荐
U盘量产工具FLASH量产工具SM3280&3281&3282-AvidiaV0209整合版
java课程期末考试
分布式消息中间件,参考kafka,未完成
修木工施工规范及流程.docx
内容概要:本文详细介绍了VECTOR提供的MICROSAR OBD协议栈解决方案,涵盖了OBD模块、ECU支持、监控功能和服务请求等方面的内容。此外,还讨论了OBD在不同国家和地区的技术标准与法规要求,以及MICROSAR OBD解决方案的优势,如适应不同项目的需求和高度集成于AUTOSAR 4平台。 适合人群:汽车电子工程师、软件开发者、汽车制造商及相关行业从业人员。 使用场景及目标:① 适用于车辆诊断系统的开发和维护;②帮助工程师理解和掌握OBD协议的具体实施方法和应用场景;③ 提供了一个成熟、可扩展的解决方案,用于满足OBD相关标准和法规的要求。 其他说明:本文不仅提供了技术层面的详细解析,还探讨了实际操作过程中可能遇到的问题和解决方案。同时强调了屏蔽信息过载的重要性,提醒工程师保持内心平静,专注做好本职工作。
适用于 Python 的 LINE 消息 API SDK适用于 Python 的 LINE Messaging API 的 SDK。介绍适用于 Python 的 LINE Messaging API SDK 可以轻松使用 LINE Messaging API 开发机器人,您可以在几分钟内创建一个示例机器人。文档请参阅官方 API 文档了解更多信息英语https //developers.line.biz/en/docs/messaging-api/overview/日语https://developers.line.biz/ja/docs/messaging-api/overview/要求Python >= 3.9安装$ pip 安装 line-bot-sdk概要用法from flask import Flask, request, abortfrom linebot.v3 import ( WebhookHandler)from linebot.v3.exceptions import ( InvalidSig
Java字节码工程工具包Javassist 版本 3版权所有 (C) 1999-2023 Shigeru Chiba,保留所有权利。Javassist(JAVA 编程助手)使 Java 字节码操作变得简单。它是一个用于编辑 Java 字节码的类库它使 Java 程序能够在运行时定义新类并在 JVM 加载类文件时对其进行修改。与其他类似的字节码编辑器不同,Javassist 提供两个级别的 API源代码级别和字节码级别。如果用户使用源代码级别 API,他们可以编辑类文件而无需了解 Java 字节码的规范。整个 API 仅使用 Java 语言的词汇表进行设计。您甚至可以以源文本的形式指定插入的字节码Javassist 会即时编译它。另一方面,字节码级别 API 允许用户像其他编辑器一样直接编辑类文件。该软件根据 Mozilla 公共许可证版本 1.1、GNU 宽通用公共许可证版本 2.1 或更高版本或 Apache 许可证版本 2.0 分发。文件README.md 此自述文件。Changes.md 发行说明。License.html 许可证文件。tuto
本项目是基于Python语言开发的西西家居全屋定制系统,旨在为家居行业提供一个高效、智能的定制解决方案。项目涵盖了从客户需求分析、设计方案生成、材料选购到最终订单生成的全过程,力求实现家居定制的数字化和智能化。 在主要功能方面,系统具备强大的客户管理模块,能够详细记录和分析客户的定制需求。设计模块则采用先进的三维建模技术,为客户提供直观、真实的家居设计方案预览。此外,系统还整合了丰富的材料数据库,方便客户根据自身喜好和预算进行材料选择。 框架方面,项目采用了B/S架构,确保了系统的稳定性和可扩展性。后端使用Python的Django框架,前端则结合了HTML、CSS和JavaScript等技术,实现了用户界面的友好和响应速度。 开发此项目的目的,不仅是为了满足家居行业对个性化定制的需求,也为计算机相关专业的学生提供了一个实践和学习的平台,有助于提升他们的实际开发能力。
Javascript 是数字化创新的起点,是语言的基础,也是基本概念。Basecamp JavascriptJavascript 是数字化创新的起点,是语言的基础,也是基本概念。嵌套存储库,可作为启动项下待办事项的实践活动。
已弃用 — Coinbase Python APICoinbase Coinbase API V2的官方 Python 库。重要提示此库当前针对的是 API V2,而 OAuth 客户端需要 V2 权限(即wallet:accounts:read)。如果您仍在使用 API V1,请使用此库的旧版本。特征接近 100% 的测试覆盖率。支持API Key + Secret和OAuth 2身份验证。调用 API 的便捷方法 - 为您打包 JSON!自动将 API 响应解析为相关的 Python 对象。使用IPython时,所有对象都具有可制表完成的方法和属性。安装coinbase可以在PYPI上使用。使用以下命令安装pippip install coinbase或者easy_installeasy_install coinbase该库目前针对 Python 版本 2.7 和 3.4+ 进行了测试。注意此软件包名称过去是指George Sibble维护的非官方 coinbase_python 库。George 慷慨地允许我们使用此软件包
基于RBAC权限控制的基础后台
本项目是基于Python爬虫的网络小说数据分析系统的设计与实现,旨在为计算机相关专业的大学生提供一个实践平台,特别是在毕业设计和项目实战练习方面。项目通过Python强大的网络爬虫技术,从流行的网络小说网站自动抓取数据,包括书籍信息、章节内容、用户评论等。 主要功能涵盖数据采集、数据清洗、数据存储和数据分析。数据采集模块利用Scrapy等爬虫框架高效抓取网页内容;数据清洗模块确保数据的准确性和一致性;数据存储则采用MySQL等数据库系统,便于数据管理和查询;数据分析模块通过Pandas、NumPy等工具进行数据处理和分析,生成多维度的统计报告和可视化图表。 此项目不仅帮助学生掌握Python编程和网络爬虫技术,还能让他们深入了解数据分析的全过程,提升解决实际问题的能力。同时,系统的实现和应用也反映了现代信息技术在文学创作和消费领域的应用价值和潜力。
本项目是一个基于Java的在线日语培训平台的设计与实现,采用SSM框架(Spring+SpringMVC+MyBatis)进行开发,旨在为计算机相关专业的学生提供一个实践和学习的平台,同时也为日语学习者提供一个在线学习的空间。项目中主要功能涵盖了用户管理、课程管理、学习资源上传下载、在线测试与反馈等多个方面。通过该平台,教师能够轻松管理课程内容和学生信息,学生则可以随时随地访问学习资源,参与在线课程和测试,从而提高学习效率和兴趣。 在开发此项目的过程中,我们重点关注了系统的可维护性和可扩展性,确保代码结构清晰,便于后续的功能迭代和优化。此外,通过使用SSM框架,实现了前后端的分离,提高了开发效率和系统的响应速度。该项目不仅能够满足毕设的需求,还能作为Java学习者提升编程能力和实践经验的实用工具。
基于java的机票管理系统设计与实现.docx
该项目为《基于Java实现的数据结构设计源码》,共包含51个文件,主要由46个Java源文件构成,辅以2个文本文件、1个Git忽略文件、1个许可证文件以及1个XML文件,全面涵盖了数据结构设计的核心内容。
绿色食品 水稻生产操作规程.docx
他妈的 Fuck是一款出色的应用程序,其灵感来自@liamosaur 的 推文,它可以纠正以前控制台命令中的错误。The Fuck太慢了吗?试试实验性的即时模式!更多示例➜ apt-get install vimE: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?➜ fucksudo apt-get install vim [enter/↑/↓/ctrl+c][sudo] password for nvbn:Reading package lists... Done...➜ git pushfatal: The current branch master has no upstream branch.To push the current branch and set the remote
全国大学生FPGA创新设计竞赛作品 “泡罩包装药品质量在线检测平台“.zip
桃苗木质量基本要求表.docx
使用 Python 漂亮地打印表格数据,这是一个库和一个命令行实用程序。存储库从 bitbucket.org/astanin/python-tabulate 迁移而来。python-tabulate使用 Python、库和命令行实用程序漂亮地打印表格数据。该库的主要用例是轻松打印小表格只需一个函数调用,格式由数据本身引导为轻量级纯文本标记创作表格数据多种输出格式适合进一步编辑或转换混合文本和数字数据的可读表示智能列对齐、可配置数字格式、小数点对齐安装要安装 Python 库和命令行实用程序,请运行pip install tabulate命令行实用程序将在 Linux 上安装为(例如tabulate)或者在 Windows 上的 Python 安装中安装为(例如)。bin/usr/bintabulate.exeScriptsC:\Python39\Scripts\tabulate.exe您可以考虑仅为当前用户安装该库pip install tabulate --user在这种情况下,命令行实用程序将安装到 ~/.local/bin/tabula