vitlance
02.04.2007, 14:40
Для некоторых вопрос покажетса смешным, и простым.. Но т.к как я делаю всё без классов незнаю как же запустить вот этот класс:
class htest.Sprite extends MovieClip {
public function Sprite() {
super();
}
private function getMax(arr:Array):Number {
var max:Number = arr[0];
for(var i:Number = 1; i<arr.length; i++)
if(arr[i]>max) max = arr[i];
return max;
}
private function getMin(arr:Array):Number {
var min:Number = arr[0];
for(var i:Number = 1; i<arr.length; i++)
if(arr[i]<min) min = arr[i];
return min;
}
private function getOverlayArea(target:Sprite):Array {
var area:Array = []; area[0] = {}; area[1] = {};
area[0].x = getMax([this._x,target._x]);
area[0].y = getMax([this._y,target._y]);
area[1].x = getMin([this._x+this._width,target._x+target._width]);
area[1].y = getMin([this._y+this._height,target._y+target._height]);
return area;
}
public function overlayTest(target:Sprite):Boolean {
var overlay:Boolean = false;
if(this.hitTest(target)){
var area:Array = getOverlayArea(target);
var step:Number = 1;
var y:Number = area[0].y;
while(y<area[1].y){
y+=step;
var x:Number = area[0].x;
while(x<area[1].x){
var test1:Boolean = this.hitTest(x,y,true);
var test2:Boolean = target.hitTest(x,y,true);
if(test1 && test2){
overlay = true;
return overlay;
}
x+=step;
}
}
}
return overlay;
}
}
Это класс который проверяет hittest контура любой фигуры... Я хочу чтобы он работал в моей флэшки.. Т.е чтобы я отовсюду мог вызывать функцию overlayTest ... чтобы он работал вот так:
if (mc1.overlayTest(mc2)){
trace("ura");}
class htest.Sprite extends MovieClip {
public function Sprite() {
super();
}
private function getMax(arr:Array):Number {
var max:Number = arr[0];
for(var i:Number = 1; i<arr.length; i++)
if(arr[i]>max) max = arr[i];
return max;
}
private function getMin(arr:Array):Number {
var min:Number = arr[0];
for(var i:Number = 1; i<arr.length; i++)
if(arr[i]<min) min = arr[i];
return min;
}
private function getOverlayArea(target:Sprite):Array {
var area:Array = []; area[0] = {}; area[1] = {};
area[0].x = getMax([this._x,target._x]);
area[0].y = getMax([this._y,target._y]);
area[1].x = getMin([this._x+this._width,target._x+target._width]);
area[1].y = getMin([this._y+this._height,target._y+target._height]);
return area;
}
public function overlayTest(target:Sprite):Boolean {
var overlay:Boolean = false;
if(this.hitTest(target)){
var area:Array = getOverlayArea(target);
var step:Number = 1;
var y:Number = area[0].y;
while(y<area[1].y){
y+=step;
var x:Number = area[0].x;
while(x<area[1].x){
var test1:Boolean = this.hitTest(x,y,true);
var test2:Boolean = target.hitTest(x,y,true);
if(test1 && test2){
overlay = true;
return overlay;
}
x+=step;
}
}
}
return overlay;
}
}
Это класс который проверяет hittest контура любой фигуры... Я хочу чтобы он работал в моей флэшки.. Т.е чтобы я отовсюду мог вызывать функцию overlayTest ... чтобы он работал вот так:
if (mc1.overlayTest(mc2)){
trace("ura");}