//舞台属性设置
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
var
selectBox:Sprite =
new
Sprite();
//生成选择框
var
recordX:Number;
//记录初始x坐标
var
recordY:Number;
//记录初始y坐标
var
endX:Number;
//记录结束x坐标
var
endY:Number;
//记录结束y坐标
var
moveX:Number;
//记录移动之后x坐标
var
moveY:Number;
//记录移动之后y坐标
var
myImage:Bitmap;
//显示图片的容器
var
dragFlag:Boolean=
false
;
//用于判断选择框是否正在拖动
var
clickPoint:Point;
//记录开始的选择框对应的舞台坐标点
var
endPoint:Point;
//记录选择框绘制结束后选择框对应的舞台坐标点
initStage();
function
initStage() {
myImage=
new
Bitmap();
addChild(myImage);
bg.addEventListener(MouseEvent.MOUSE_DOWN,startDraw);
//绘制选择框
selectBox.addEventListener(MouseEvent.MOUSE_DOWN,dragSelectBox);
//拖动选择框
selectBox.addEventListener(MouseEvent.MOUSE_UP,stopDragSelectBox);
//停止拖动选择框
}
function
dragSelectBox(_evt:MouseEvent):
void
{
_evt.currentTarget.startDrag();
dragFlag=
true
;
}
function
stopDragSelectBox(_evt:MouseEvent) {
if
(dragFlag==
true
) {
createJPG(mc_image,selectBox,Math.min(selectBox.localToGlobal(clickPoint).x,selectBox.localToGlobal(endPoint).x),Math.min(selectBox.localToGlobal(clickPoint).y,selectBox.localToGlobal(endPoint).y));
selectBox.stopDrag();
dragFlag =
false
;
}
}
//开始绘制
function
startDraw(_evt:MouseEvent):
void
{
stage.addEventListener(Event.ENTER_FRAME,drawSelectBox);
recordX = mouseX;
recordY = mouseY;
clickPoint =
new
Point(recordX,recordY);
}
//绘制选择框
function
drawSelectBox(_evt:Event):
void
{
selectBox.x=selectBox.y=0;
//恢复坐标到原点
selectBox.graphics.clear();
selectBox.graphics.lineStyle(1,0x000000);
selectBox.graphics.beginFill(0xffffff,0.7);
selectBox.graphics.drawRect(recordX,recordY,mouseX-recordX,mouseY-recordY);
selectBox.graphics.endFill();
addChild(selectBox);
stage.addEventListener(MouseEvent.MOUSE_UP,endDraw);
// 鼠标在舞台上放开时的事件
}
//绘制结束
function
endDraw(_evt:MouseEvent):
void
{
stage.removeEventListener(Event.ENTER_FRAME,drawSelectBox);
selectBox.stopDrag();
dragFlag =
false
;
endX = mouseX;
endY = mouseY;
endPoint =
new
Point(endX,endY);
createJPG(mc_image,selectBox,Math.min(recordX,endX),Math.min(recordY,endY));
stage.removeEventListener(MouseEvent.MOUSE_UP,endDraw);
//鼠标在舞台上放开时的事件
}
function
createJPG(m:MovieClip,box:Sprite,originX:Number,originY:Number) {
removeChild(myImage);
var
jpgSource:BitmapData=
new
BitmapData (m.width, m.height);
//先把背景图转换成BitmapData
jpgSource.draw(m);
var
rect:Rectangle =
new
Rectangle(originX,originY,box.width,box.height);
//设置复制的区域和大小
var
pt:Point =
new
Point(0, 0);
//复制到的对象的起始点
var
jpgOut:BitmapData=
new
BitmapData(box.width, box.height);
jpgOut.copyPixels(jpgSource, rect, pt);
//复制区域内容
myImage =
new
Bitmap(jpgOut);
addChild(myImage);
在Flash上点击左键拖动可以复制选中的图片内容到左上角,这个东西的具体用处,大概就是图片信息复制吧。
发表评论
-
AS3 父SWF与子SWF之间传值
2011-02-20 15:19 2624FLASH中 父SWF加载子SWF并向子SWF传值在很多应用上 ... -
flash as3.0 被加载的swf 控制主swf文件触发事件
2011-02-19 14:48 3039比如有两个swf文件 1.swf,2.swf 1.swf ... -
一些很有创意的导航栏设计,给大家分享下。
2011-02-19 11:08 1584希望对各位同学有所帮助。啊哦………… 陆续完善i ... -
浅谈webgame游戏开发技术要点
2011-02-19 11:02 1012写这些只是想和大家交 ... -
aswing
2011-02-19 10:43 870AsWing是一套UI组件框架,纯ActionScript开发 ... -
as3加载外部XML文件
2011-02-18 19:50 1447加载过程如下: 1.使用URLRequ ... -
如何保护swf文件不被反编译软件破解?
2011-02-18 19:42 2187How to protect SWFs from decomp ... -
45度地图编辑器及游戏开发心得
2011-02-15 19:12 1468转载 这个编辑器是本人为公司项目专门开发 的一个功能比较齐 ... -
BulkLoader开源文件加载类
2011-02-09 22:10 1218BulkLoader是一个不错且使用简单的开源加载类, ... -
社区客户端开发技术总结
2011-01-29 22:57 862不管是什么样的项目,都会拆分成一个一个小的模块。最终实现都是些 ... -
“神之惩戒”--国内MMORPG游戏的困局1
2011-01-28 15:13 805《神之惩戒——MMOR ... -
adobe alchemy资料整理
2011-01-28 14:56 2441Adobe 自从2007年中推出了AS3支持 ... -
hitTest(BitmapData.hitTest 方法)
2011-01-25 18:14 1194public hitTest(firstPoint:Poi ... -
AS3使用外部SWF文件的库文件
2011-01-25 15:32 1472在swf文件中使用外部swf文件的库文件,从而达到类似素材 ... -
Flash摄像头游戏课件设计与开发
2011-01-25 11:07 1204[导读] Flash摄像头游戏课件设计与开发 ... -
ps样式介绍
2011-01-22 14:32 859PS样式就是效果的集合。“窗口”“样式”就可以打开样式面板。里 ... -
获取当前SWF的绝对路径
2011-01-20 19:22 1380首先 ,说明我测试的系统地址和网络地址的情况: 某电脑 ... -
PureMVC中观察者模式运用
2011-01-20 09:36 1295刚一个开始看PureMVC,一个字乱,摸不着头脑,不过这个要慢 ... -
获取当前SWF的当前路径
2011-01-19 20:00 1446首先 ,说明我测试的系统地址和网络地址的情况: 某电脑 ... -
Event.INIT Event.COMPLETE 区别
2011-01-19 11:50 1290package{ import flash ...
相关推荐
BitmapData是ActionScript 3(AS3)中的一个核心类,它是处理像素数据的主要工具,广泛应用于游戏开发、图像处理和动画制作等场景。在AS3中,BitmapData类允许我们创建、读取、修改和操作位图数据,这些位图数据可以...
BitmapData类是AS3中处理像素数据的主要类,它可以用于读取、写入和操作位图数据。在裁剪过程中,我们会创建一个BitmapData对象,用它来复制原始图片的像素数据。 1. **创建裁剪形状**: 首先,创建一个Shape实例...
在AS3中,图像处理主要通过BitmapData类来完成。BitmapData类提供了对像素级别的操作,包括读取、修改和创建位图数据。在这个切图工具中,核心算法可能涉及以下步骤: 1. **加载大图**:使用Loader类加载图片文件,...
本项目“flash-as图像合成”提供了一个实现这些功能的实例,包含了必要的源代码和配置文件。以下是关于这个主题的详细解释: 1. **PNGEncoder.as**: 这个文件是用于将位图对象转换为PNG格式的编码类。在AS3中,...
1. `copyPixels()`:从源BitmapData复制像素到目标位置,常用于图像拼接和复制。 2. `hitTest()`:检测两个BitmapData区域是否有重叠,返回一个布尔值。 3. `threshold()`:基于指定条件更改像素颜色,可用于创建...
### AS3高手之路 在《AS3高手之路》这一篇深度技术文章中,作者系统地介绍了Adobe Flash平台下的ActionScript 3(AS3)编程语言的相关知识点与实践技巧。这篇文章对于希望深入掌握AS3编程的专业人士来说是一份宝贵...
Flex本身并不包含强大的图像处理功能,但可以借助第三方库如as3corelib或GreenSock的BitmapData类进行图片裁剪。BitmapData对象可以用来读取、写入和操作位图数据。 7. **实际剪切操作**: - 使用BitmapData的...
9. **第三方库**:虽然Flex本身提供了基本的截图功能,但有些情况下可能需要借助第三方库,如as3corelib,它提供了更高级的图像处理功能,包括多种图片格式的编码和解码。 10. **代码组织与设计模式**:良好的代码...
- **复制位图数据**:使用 `copyPixels()` 或 `mergePixels()` 可以复制或合并位图数据。 - **使用杂点功能制作纹理**:杂点(Noise)功能可用于生成随机像素,这在制作纹理效果时非常有用。 - **滚动位图**:通过...