![]() |
|
||||||||||
|
|
|
|||||
|
Banned
Регистрация: Mar 2008
Сообщений: 2
|
как переписать этот класс на AS3?
import flash.filters.*;
import flash.geom.*;
import flash.display.*;
class GlassWin extends MovieClip{
private var glassColor:Number=0xD9FFFF;
private var glassAlpha:Number=35;
private var mousePoint:Point;
private var alphaScreen:MovieClip;
private var blurScreen:MovieClip;
private var blurBitmap:BitmapData;
public function GlassWin(){
var w:Number=Math.floor(_width);
var h:Number=Math.floor(_height);
var lowDepth=0;
//всех поднимем на 2, чтоб освободить место для скринов
for(var i in this) {
if(this[i].getDepth()<lowDepth)lowDepth=this[i].getDepth();
_root.swapDepths.call(this[i],this[i].getDepth()+2);
}
//////////////
var bounds=getBounds(this);
alphaScreen=this.createEmptyMovieClip("alphaScreen",lowDepth+1);
blurScreen=this.createEmptyMovieClip("blurScreen",lowDepth);
alphaScreen._x=blurScreen._x=bounds.xMin;
alphaScreen._y=blurScreen._y=bounds.yMin;
alphaScreen.beginFill(glassColor,glassAlpha);
alphaScreen.lineTo(w,0);
alphaScreen.lineTo(w,h);
alphaScreen.lineTo(0,h);
alphaScreen.endFill();
////////
blurBitmap=new BitmapData(w,h);
blurScreen.attachBitmap(blurBitmap,0);
getScreen();
render();
}
function onPress(){
mousePoint=new Point(_xmouse,_ymouse);
onEnterFrame=render;
}
function onRelease(){
onEnterFrame=null;
}
function render(){
_x+=_xmouse-mousePoint.x;
_y+=_ymouse-mousePoint.y;
mousePoint=new Point(_xmouse,_ymouse);
getScreen();
updateAfterEvent();
}
function getScreen(){
var p:Point=new Point(_x,_y);
_parent.localToGlobal(p);
var tx:Number=-(p.x+blurScreen._x);
var ty:Number=-(p.y+blurScreen._y);
var mtrx=new Matrix(1,0,0,1,tx,ty);
_visible=false;
blurBitmap.draw(_root,mtrx);
_visible=true;
blurBitmap.applyFilter(blurBitmap,blurBitmap.rectangle,new Point(),new BlurFilter(10,10));
}
}
package{
import flash.filters.*;
import flash.geom.*;
import flash.display.*;
import flash.events.*;
public class GlassWin extends MovieClip{
private var glassColor:Number=0xD9FFFF;
private var glassAlpha:Number=35;
private var mousePoint:Point;
private var alphaScreen:MovieClip;
private var blurScreen:MovieClip;
private var blurBitmap:BitmapData;
public function mouseDownHandler(event:MouseEvent){
mousePoint=new Point(mouseX,mouseY);
addEventListener(Event.ENTER_FRAME, render);
}
public function clickHandler(){
removeEventListener(Event.ENTER_FRAME, render);
}
public function render(e:Event){
x+=mouseX-mousePoint.x;
y+=mouseY-mousePoint.y;
mousePoint=new Point(mouseX,mouseY);
getScreen();
}
public function getScreen():void{
var p:Point=new Point(x,y);
parent.localToGlobal(p);
var tx:Number=-(p.x+blurScreen.x);
var ty:Number=-(p.y+blurScreen.y);
var mtrx=new Matrix(1,0,0,1,tx,ty);
visible=false;
blurBitmap.draw(stage,mtrx);
visible=true;
blurBitmap.applyFilter(blurBitmap,blurBitmap.rectangle,new Point(),new BlurFilter(10,10));
}
public function GlassWin(){
var w:Number=Math.floor(this.width);
var h:Number=Math.floor(this.height);
var lowDepth=0;
//всех поднимем на 2, чтоб освободить место для скринов
for(var i in this) {
if(this[i].getDepth()<lowDepth)lowDepth=this[i].getDepth();
stage.swapDepths.call(this[i],this[i].getDepth()+2);
}
//////////////
var bounds=getBounds(this);
var alphaScreen:MovieClip = new MovieClip();
addChild(alphaScreen);
var blurScreen:MovieClip = new MovieClip();
addChild(blurScreen);
alphaScreen.x=blurScreen.x=bounds.x;
alphaScreen.y=blurScreen.y=bounds.y;
alphaScreen.graphics.beginFill(glassColor,glassAlpha);
alphaScreen.graphics.lineTo(w,0);
alphaScreen.graphics.lineTo(w,h);
alphaScreen.graphics.lineTo(0,h);
alphaScreen.graphics.endFill();
////////
blurBitmap=new BitmapData(w,h);
var blurScreen1:Bitmap = new Bitmap(blurBitmap);
blurScreen.addChild(blurScreen1)
getScreen();
render();
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
addEventListener(MouseEvent.CLICK, clickHandler);
}
}
}
![]() |
|
|||||
|
во как я заглянул,теперь как честный человек не могу остаться в стороне..
в AS3 имхо все существенно проще: просто на нулевой глубине создаем битмап, в который походу копируем parent (или что-там нужно), скрывая перед этим сам мувик.. упрощенная (контент мувика должен быть в координатах 0,0), но вполне рабочая версия: package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Point;
public class GlassWin extends MovieClip{
private var clickPoint:Point;
private var blurBMP:Bitmap;
public function GlassWin() {
blurBMP = new Bitmap(new BitmapData(width, height));
blurBMP.filters= [new BlurFilter(16,16)];
addChildAt(blurBMP, 0);
addEventListener(MouseEvent.MOUSE_DOWN, onPress);
addEventListener(MouseEvent.MOUSE_UP, onRelease);
render();
}
private function onRelease(e:MouseEvent):void {
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function onPress(e:MouseEvent):void {
clickPoint = new Point(mouseX, mouseY);
addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function onMouseMove(e:MouseEvent):void {
x += mouseX - clickPoint.x;
y += mouseY - clickPoint.y;
clickPoint = new Point(mouseX, mouseY);
render();
}
private function render():void {
var mtrx:Matrix = new Matrix();
mtrx.translate(-x, -y);
visible = false;
blurBMP.bitmapData.draw(parent, mtrx);
visible = true;
}
}
}
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 306
|
Теперь можешь на silin.fatal.ru в раздел AS3 поставить
ЗАЧЕТ!!!Последний раз редактировалось telit; 21.03.2008 в 10:32. |
|
|||||
|
Banned
Регистрация: Mar 2008
Сообщений: 2
|
Спасибо большое!
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
telit, аккаунт AS3_coder забанен. 1 человек = 1 аккаунт и плодить одинаковые темы от разных аккаунтов не пройдет.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|