如何屏蔽图像与ActionScript 3.0的另一个形象

我的问题是这样的,我的用户导入使用的FileReference的形象,我需要掩盖它,然后将其发送给服务器。

我的问题是这样的:我可以做保持的FileReference事件和图像数据传输到我的画布。 我能够发送给服务器掩蔽的结果。

但我无法掩盖的形象,我的用户有负荷我的画布。

有任何帮助/例子?

感谢尼古拉

--------------解决方案-------------

你只需要添加加载的位图可屏蔽容器(如雪碧)。 对于〔实施例:Test.as

package {
import flash.display.Graphics;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.FileFilter;
import flash.net.FileReference;

public class Test extends Sprite {

private var _fileReference:FileReference;
private var _fileFilter:FileFilter;
private var _loader:Loader;
private var _imageContainer:Sprite;
private var _mask:Sprite;
private var _canvas:Sprite;

public function Test() {
addEventListener(Event.ADDED_TO_STAGE, addedToStageListener, false, 0, true);
}

private function addedToStageListener(event:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, addedToStageListener);

_fileReference = new FileReference();
_fileReference.addEventListener(Event.SELECT, fileSelectedListener, false, 0, true);
_fileReference.addEventListener(Event.COMPLETE, fileLoadCompleteListener, false, 0, true);

_fileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");

_loader = new Loader();
_canvas = new Sprite();

_mask = new Sprite();
var maskGraphics:Graphics = _mask.graphics;
maskGraphics.beginFill(0xFFFFFF);
maskGraphics.drawCircle(50, 50, 50);
maskGraphics.endFill();

_imageContainer = new Sprite();
_imageContainer.mask = _mask;

_canvas.addChild(_imageContainer);
_canvas.addChild(_mask);

addChild(_canvas);

stage.addEventListener(MouseEvent.CLICK, mouseClickListener, false ,0, true);
}

private function mouseClickListener(event:Event):void {
_fileReference.browse([_fileFilter]);
}

private function fileSelectedListener(event:Event):void {
_fileReference.load();
}

private function fileLoadCompleteListener(event:Event):void {
_loader.loadBytes(event.target.data);

while(_imageContainer.numChildren) {
_imageContainer.removeChildAt(0);
}
_imageContainer.addChild(_loader);
}
}}

这改变了的情况,但不显着。 查阅修改后的解决方案:

package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.net.FileFilter;
import flash.net.FileReference;

public class Test extends Sprite {

private var _fileReference:FileReference;
private var _fileFilter:FileFilter;
private var _imageLoader:Loader;
private var _maskLoader:Loader;
private var _canvas:Sprite;

private var _imageLoaded:Boolean = false;

public function Test() {
addEventListener(Event.ADDED_TO_STAGE, addedToStageListener, false, 0, true);
}

private function addedToStageListener(event:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, addedToStageListener);

_fileReference = new FileReference();
_fileReference.addEventListener(Event.SELECT, fileSelectedListener, false, 0, true);
_fileReference.addEventListener(Event.COMPLETE, fileLoadCompleteListener, false, 0, true);

_fileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");

_imageLoader = new Loader();
_imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadCompleteListener, false, 0, true);
_maskLoader = new Loader();
_maskLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, maskLoadCompleteListener, false, 0, true);

_canvas = new Sprite();
addChild(_canvas);

stage.addEventListener(MouseEvent.CLICK, mouseClickListener, false ,0, true);
}

private function mouseClickListener(event:Event):void {
_fileReference.browse([_fileFilter]);
}

private function fileSelectedListener(event:Event):void {
_fileReference.load();
}

private function fileLoadCompleteListener(event:Event):void {
if (!_imageLoaded) {
_imageLoader.loadBytes(event.target.data);
} else {
_maskLoader.loadBytes(event.target.data);
}
}

private function imageLoadCompleteListener(event:Event):void {
_imageLoaded = true;
}

private function maskLoadCompleteListener(event:Event):void {
var imageBitmap:Bitmap = _imageLoader.content as Bitmap;
var maskBitmap:Bitmap = _maskLoader.content as Bitmap;

if (imageBitmap && maskBitmap) {
var imageBitmapData:BitmapData = imageBitmap.bitmapData;
var maskBitmapData:BitmapData = maskBitmap.bitmapData;

var boundRectange:Rectangle = new Rectangle(0, 0, maskBitmap.width, maskBitmap.height);
var destinationPoint:Point = new Point(0, 0);

var finalBitmapData:BitmapData = new BitmapData(maskBitmap.width, maskBitmap.height);
finalBitmapData.copyPixels(imageBitmapData, boundRectange, destinationPoint, maskBitmapData, destinationPoint);
var finalBitmap:Bitmap = new Bitmap(finalBitmapData);

while(_canvas.numChildren) {
_canvas.removeChildAt(0);
}
_canvas.addChild(finalBitmap);
}
}
}}

首先点击在舞台上,您可以选择屏蔽的图像。 第二次点击,您可以选择图像,其中包含了屏蔽信息(如PNG文件的透明度,像你的形象)。 希望这可以帮助。

分类:动作3 时间:2012-01-01 人气:0
分享到:

相关文章

  • 如何在2008年的Gentoo安装屏蔽包? 2014-06-05

    我搜索网和手册,但我只是设法了解什么是屏蔽包,而不是如何安装它. 我也找到了一些命令,但他们似乎并没有工作在2008年(看着它,似乎这些都是早期版本). 我有这样的事情: localhost ~ # emerge flamerobin Calculating dependencies !!! All ebuilds that could satisfy "dev-db/flamerobin" have been masked. !!! One of the following mask

  • 类似功能的Java在struct的蟒蛇 2012-01-17

    我有一个程序,我在Python为寻求在TIFF IFD的特定标记和返回值. 这只是概念的东西在python证明,现在我需要的功能转移到Java. 我想我可以只使用String(byteArray[])构造函数ASCII数据类型,但我仍然需要获得Unsigned short (2 byte)和unsigned long (4 byte)值. 我并不需要将它们写回文件或者修改它们,我需要做的就是一个Java Integer或Long从他们的对象. 这是很容易与蟒蛇struct和mmap类,没有任何一

  • 设计规范,以适应CPU的缓存? 2012-09-09

    当写模拟我的朋友说,他喜欢尝试写程序小到足以放入高速缓存. 这是否有什么实际意义? 据我所知,高速缓存比RAM和主存储器更快. 是否可以指定要使用的程序从缓存中运行,或者至少变量加载到缓存? 我们正在编写模拟等等任何性能/优化增益是一个巨大的好处. 感谢您的帮助. 如果我做了一个重复的或者你知道的任何良好的联系,说明CPU的缓存,然后点我这个方向努力. --------------解决方案------------- 至少在一个典型的台式机CPU,你真的不能说明太多关​​于直接高速缓存的使用. 你

  • 在Objective-C使用位屏蔽:iOS版如何处理存储在位掩码选择? 2015-02-17

    于是,我开始学习iOS开发和Objective-C最近,主要是利用斯坦福大学在iTunes U.免费课程 我结束了跨位掩码,有事广泛用于iOS的API的磕磕绊绊,但我不是很熟悉. 我读过一些关于它的东西,现在我明白了它的基础,至少. 在这个过程中肆我们正在开发的卡配对游戏,喜欢游戏的浓度. 卡由按钮表示. 正常状态( UIControlStateNormal )表示卡的背面,而选中状态( UIControlStateSelected )表示其前端(即,它的内容,被称为串属性card.conten

  • 使用FLEX3 /动作超时错误 2012-12-12

    好吧,这是我迄今为止 - 但它给了我一个错误,说我缺少一个分号的地方,但我不能揣摩出. 然后暂停后,即PIC是隐藏的,一个不同的显示 - 基本上被点击按钮时,产生的随机数,再一个PIC是隐藏的,一个是显示我想要它做的是. <mx:Button x="220" y="10" label="Shuffle the Cards" fontFamily="Times New Roman" fontSize="18&qu

  • 动作 - 屏蔽编程绘制的图形? 2013-08-11

    假设我有一个大的,静态的,编程绘制矢量扩展远远超出舞台的图形. 最好先用面膜舞台尺寸图形? 没有虚拟机还是画不是舞台上的部分? 没有一个编程绘制图形的掩膜减少一半一半的拉丝工艺处理? --------------解决方案------------- 是的,它仍然吸引它,即使它超越阶段. 性能方面,使用最好的事情是scrollRect的,在您创建一个矩形,并告诉仅仅是在屏幕上绘制的矩形内的任何东西. 它的方式更好的性能,明智的不是面具了. http://gskinner.com/blog/archi

  • 如何手动触发动作/ FLEX3 click事件? 2013-11-08

    类似下面的在javascript: <input id="target" type="button" onclick="..." /> <script> document.getElementById('target').click(); </script> --------------解决方案------------- 您可以使用则dispatchEvent功能:http://livedocs.adobe.c

  • 屏蔽Perl中的字符串中使用口罩字符串 2014-01-22

    我有一个字符串,如"xxox-X',我想掩盖的每一行中对这样的文件: X的被忽略(或只是设置为已知值) O公司保持不变 的 - 是一个可变长度字段,将让其他一切不变 因此掩盖"xxox-X"反对"DEADBEEF"会产生"xxaxbeex" 同样的面具"xxox-X"反对"deadabbabeef"会产生"xxaxabbabeex" 使用S运营商如何才能做到这一点简洁的首选?

  • FLEX3 - 动作脚本:如何捕获对象数组的emptynes​​s 2014-11-12

    我想知道,当对象的数组是空的(或没有). 我尝试使用一个ObjectProxy如下: myArrayProxy=new ObjectProxy(myArray); myArrayProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, changeArrayHandler) 但该事件不会触发当对象的内容变化. 关于如何解决这个任何想法? 谢谢 --------------解决方案------------- 你可以使用一个ArrayCo

  • 创建使用动作脚本3口罩走出自定形状与画的精灵 2015-02-16

    我试图创建蒙了一个自定义形状的,有没有什么办法的形状对象转换为遮罩对象? 形状使用AS3动态绘制代码. 我似乎无法找到任何链接,做这样的事情. 下面是创建应用程序的代码: var numPoints:Number = 0; // Number of points placed. // No dragging will work until all three points are placed. // Set max & min stage coordinates that the points

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.563 (s). 10 q(s)