포럼에서 다음 코드를 복사했지만 플래시에서 작동하지 않습니다.내 플래시에서 파일을 다음과 같이 사용하는 방법은 무엇입니까?
무대에서 나는 사용하고 싶은 jpg가 있고 다음 코드를 사용하여 jpg를 편집하고 싶습니다. 따라서 게시 >> 클래스 >> LomoBitmapdata 을 편집하고 as 파일을 호출하는 버튼을 추가하면 출력 플래시에 '오류 1114'가 표시됩니다.
여기 당신은 충분히 특정하지 않은 파일 http://www.2shared.com/file/mwNIBwKM/LomoBitmapdata.html
package
{
import flash.display.BitmapData;
import flash.display.GradientType;
import flash.display.Graphics;
import flash.display.Shape;
import flash.display.SpreadMethod;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.display.Sprite;
public class LomoBitmapdata
{
private var bitmapdata:BitmapData;
private var lightBitmapdata:BitmapData;
public function LomoBitmapdata()
{
}
public function processLomo(bitmapdata:BitmapData):void{
this.bitmapdata = bitmapdata;
processSereen();
lightBitmapdata = bitmapdata.clone();
processInvert();
processRedAdd();
drawShape();
}
private function processPixel(fun:Function):void{
for(var i:int=0;i<bitmapdata.width;i++){
for(var j:int=0;j<bitmapdata.height;j++){
fun(i,j);
}
}
}
private function processSereen():void{
processPixel(sereenBitmaps);
}
private function sereenBitmaps(i:int,j:int):void{
var color32:uint = bitmapdata.getPixel(i,j);
var red:int = color32 >> 16;
var green:int = color32 >> 8 & 0xFF;
var blue:int = color32 & 0xFF;
var redInt:int = screenBase(red,red);
var greenInt:int = screenBase(green,green);
var blueInt:int = screenBase(blue,blue);
var newUint:uint = redInt << 16 | greenInt << 8 | blueInt;
bitmapdata.setPixel(i,j,newUint);
}
private function screenBase(topPixel:int, bottomPixel:int):int {
return (255 - ((255 - topPixel) * (255 - bottomPixel))/255);
}
private function processInvert():void{
bitmapdata.colorTransform(new Rectangle(0,0,bitmapdata.width,bitmapdata.height),new ColorTransform(-1,-1,-1,1,255,255,255,1));
}
private function processRedAdd():void{
processPixel(redadd);
}
private function redadd(i:int,j:int):void{
var top:uint = bitmapdata.getPixel(i,j);
var bottom:uint = lightBitmapdata.getPixel(i,j);
var red:int = top >> 16;
var green:int = top >> 8 & 0xFF;
var blue:int = top & 0xFF;
var redbottom:int = bottom >> 16;
var greenbottom:int = bottom >> 8 & 0xFF;
var bluebottom:int = bottom & 0xFF;
var resultR:int = redbottom;
var resultG:int = greenbottom;
var resultB:int = blue*0.2 + bluebottom*0.8;
var newUint:uint = resultR << 16 | resultG << 8 | resultB;
bitmapdata.setPixel(i,j,newUint);
}
private function drawShape():void{
var shape:Shape = new Shape;
var g:Graphics = shape.graphics;
var fillType:String = GradientType.RADIAL;
var colors:Array = [0x000000, 0x000000];
var alphas:Array = [0, 0.3];
var ratios:Array = [200,255];
var matr:Matrix = new Matrix();
matr.createGradientBox(bitmapdata.width+100, bitmapdata.height+100, 0, 0, 0);
var spreadMethod:String = SpreadMethod.PAD;
g.beginGradientFill(fillType, colors, alphas, ratios,matr);
g.drawRect(0,0,bitmapdata.width+160,bitmapdata.height+160);
matr = new Matrix();
matr.tx = -50;
matr.ty = -50;
bitmapdata.draw(shape,matr);
}
}
}
더 구체적으로 알려주시겠습니까, 어떤 행을 알려주시겠습니까? 이 질문은 거의 downvote의 가치가있다. 당신은 당신이하고있는 일, 일어났던 일, 일어날 일 등을 설명 할 필요가 있습니다. 엄청난 코드 덩어리를 게시하고 사람들에게 알아 내도록 요청할 수는 없습니다. –