FP10을 대상으로하고 ColorTransform으로 시도한 것과 같은 간단한 필터가 필요한 경우 PixelBlender 커널을 작성하여 2 가지 색상 인수 (소스와 대상 중 하나)를 취하고 픽셀을 소스 색상을 지정하고 대상 색상으로 바꿉니다. 이 같은 : 그는 PixelBlender IDE를 싫어하는 이유
편집 : 당신은 Stage.quality를 사용하는 경우이 앤티 앨리어싱으로 잘 작동하지만,하지 않을 것을 기억 = " 낮은 ", 그것은 중요하지 않습니다.
몇 가지 변수를 정의하는 코드의 첫 부분 사용 :
이가 (당신이 몇 줄의 코드를 변경해야합니다, 그래서
http://scriptplayground.com/tutorials/as/Flash-CS4-and-Pixel-Bender-Overview/에서 도난) 시도, AS3에서 사용을 추가하려면 나중에. 새롭게 보일 수있는 두 개의 은 Shader 및 ShaderFilter입니다. 이는 플래시 플레이어 10에 새로 추가되었으며 Pixel 벤더 필터 데이터 처리를 담당하는 클래스 입니다.
var loader:URLLoader;
var shader:Shader;
var shaderFilter:ShaderFilter;
var image:MovieClip;
var timer:Timer;
var timerInt:uint = 40;
코드의 다음 단계는 이전 단계에서 를 추가 한 무대에 에게 이미지를로드하는 것입니다.
image = new SampleImage(); image.y =
20; image.x = 25;
addChild(image);
처음 두 방법이 프로세스 필터 생성을 초기화 PBJ 파일을로드하고 위해 되어 생성 될
function startEffect() { loader = new
URLLoader(); loader.dataFormat =
URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE,
loadComplete); loader.load(new
URLRequest("sample.pbj")); }
function loadComplete(e:Event):void {
shader = new Shader(loader.data);
initFilter(); }
initFilter()
가 PBJ 파일 일단 라고 다음 함수가 성공적 이고 로드되었으므로 필터를 수 있습니다. 이 필터는 이미지가 이미지에서 본질적으로 불어 오는 이미지의 r, g, b 색상 값을 설정합니다. 은 "shader.data.red.value
"에 대한 예는 그 코드가 빨간색의 수준을 설정하는 플로트 변수 인 "매개 변수 플로트 빨간색"가 발견되면, 시작 부분에 기록 된 픽셀 벤더 코드를 참조한다. 이 경우 값은 이 20으로 설정됩니다.이 프로세스는 다른 2 색에 대해 으로 반복되고 이미지 인스턴스에 이 전달됩니다.
는
이 함수의 마지막 부분은 마지막 기능은 필터를 적용하는 과정 을 반복
function initFilter() {
shader.data.red.value = [20];
shader.data.green.value = [20];
shader.data.blue.value = [20];
shaderFilter = new
ShaderFilter(shader); image.filters =
[shaderFilter];
timer = new Timer(timerInt, 0);
timer.addEventListener(TimerEvent.TIMER,
timerHit); timer.start(); }
의 정상적인 모습으로 이미지 돌아갈 때까지이 필터를 적용 실행 타이머를 설정 먼저 은 현재 필터 값을 가져오고 은 각 값에서 0.1을 뺍니다. 이 과정은 이미지가 완전히 사라질 때까지 이미지에서 필터 강도를 천천히 제거합니다. 이 timerHit()
함수는 이 initFilter()
함수에서 작성된 타이머에서 호출됩니다. 그것이 우리가 무엇을 할 것입니다, 그래서
function timerHit(e:TimerEvent):void
{
if(shader.data.red.value == 1)
{
timer.stop();
return;
}
var r:uint = shader.data.red.value - 0.1;
var g:uint = shader.data.green.value - 0.1;
var b:uint = shader.data.blue.value - 0.1;
shader.data.red.value = [r];
shader.data.green.value = [g];
shader.data.blue.value = [b];
shaderFilter = new ShaderFilter(shader);
image.filters = [shaderFilter];
}
코드의 마지막 단계는, 이 응용 프로그램에서 이 startEffect()
함수를 호출하여 수행되는 프로세스를 시작하는 것입니다
startEffect();
눈이 피로 해져서 죄송합니다. 나는 그것이 아직 나의 가장 긴 대답이라고 생각한다!
네, 이미 첫 번째 해결책을 찾아 냈습니다.;) – Dungeo