with() funktion i en klasse
Hej, første gang som jeg bruger dette her, håber jeg kommer til at forklare mit spørgsmål godt nok :-)Jeg arbejder for første gang med "Object Orienteret Programmering" i Flash, og har prøvet at få en lille "skrabe-funktion" som jeg har tidligere lavet som "Procedural" til at virke. Kort sagt handler det om 2 billeder og et lille logo som skraber som sagt igennem den overste billede, så den nedenunder vises. Dette er del af specialiserings-projekt på min Multimediedesigner uddannelse - her følger koden (og jeg er vant til at kommentere koden på engelsk, håber det kommer til at gøre det sværere at læse igennem det hele :)
Mit spørgsmål er om det ikke er i orden at bruge with() funktionen i OOP? Jeg tror at fejlen ligger der og har derfor skrevet i koden de andre forsøg jeg har gjort.
Hilsen,
Sigva
// PROCEDURAL CODE THAT WORKS:
//CREATE THE "SQUARE" TO USE AS A MASK
_root.createEmptyMovieClip('square',0);
//SET WHICH MOVIECLIP IS THE MASK
_root.mc_maskee.setMask (_root.square)
function drawSquare() {
//SIZE OF THE SQUARE
size = 15;
x = _root._xmouse;
y = _root._ymouse;
with(_root.square) {
moveTo(x-size,y-size);
beginFill(0x000088);
lineTo(x+size,y-size);
lineTo(x+size,y+size);
lineTo(x-size,y+size);
endFill();
};
updateAfterEvent();
};
//#####################################
// MY VERSION OF THE SAME THING IN A CLASS...DOESN'T WORK
class MaskButton extends MovieClip {
// variables############################################
var mask_mc:MovieClip; // the movieclip that is "the mask" (_root.square_mc)
var over_mc:MovieClip; // the movieclip that the masks scrapes of (_root.imageOver_mc)
var under_mc:MovieClip; // the movieclip that the masks reveals (_root.imageUnder_mc)
var size:Number; // to change the size of the mask "square_mc" (coordinates with draw function)
var x:Number;
var y:Number;
var header_text:String; // text in the header of the application
var bottom_text:String; // text in the bottom of the application
// constructor#####################################################
public function MaskButton() {
onPress = doDraw; //method declared later
onRelease = stopDraw; //method declared later
// set defaults of the constructor method
// create empty movieclip and set mask
_root.createEmptyMovieClip('square_mc',0); // NOTE: Is levels causing problems?
mask_mc = _root.square_mc;
_root.imageOver_mc.setMask(_root.square_mc);
over_mc = _root.imageOver_mc;
under_mc = _root.imageUnder_mc;
// default size of coordinates for draw function (see below)
size = 15;
}
// methods#################################################
private function doDraw():Void {
this.startDrag(); // start dragging - extended from MoveClip class
this._alpha = 50; // logo becomes 50% visible
x = this._xmouse; // gives values for the draw function that comes later
y = this._ymouse;
// tracing to check, everything shows a value
trace ("tracing doDraw - size: " + size);
trace ("mask_mc: " + mask_mc);
trace ("over_mc: " + over_mc);
trace ("under_mc: " + under_mc);
trace ("x: " + x);
trace ("y: " + y);
// THE PART THE DOESN'T WORK - CAN'T GET THE LOGO TO "SCRAPE" THE MASKING IMAGE
with (mask_mc) { // have tried "_root.square_mc" and "_root.square_mc.moveTo..."
moveTo(x-size, y-size); // have also tried to use "(this.x-size, this.y-size)"
beginFill(0x000088);
lineTo(x+size, y-size);
lineTo(x+size, y+size);
lineTo(x-size, y+size);
endFill();
}
}
} // end class
