ok, so here’s the idea. I want to create a class, that I can tag onto any project I’m working on, that in essence, makes the project resizeable. I know that sounds super easy right, but just stick with me a second. So instead of inserting an on resize event listener on every site, I just do something like var _resizer:SiteResizer = new SiteResizer();. So, beginning, I came up with this.
ActionScript Code:
[LEFT]package
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]display[/COLOR].[COLOR=#000080]Sprite[/COLOR];
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]events[/COLOR].*;
[COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**class**[/COLOR] DynamicLayout [COLOR=#0000FF]extends[/COLOR] Sprite
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**function**[/COLOR] DynamicLayout[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#808080]*//super();*[/COLOR]
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]Event.[COLOR=#000080]ADDED_TO_STAGE[/COLOR], added, [COLOR=#000000]**false**[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000000]**true**[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] added[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:Event[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]this[/COLOR].[COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]Event.[COLOR=#000080]RESIZE[/COLOR], resize, [COLOR=#000000]**false**[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000000]**true**[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]trace[/COLOR][COLOR=#000000]([/COLOR][COLOR=#FF0000]"added listener"[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] resize[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:Event[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]trace[/COLOR][COLOR=#000000]([/COLOR][COLOR=#FF0000]"stage resized"[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[/LEFT]
So I guess I am really confused about the whole inheritance, composition, thing…
is there even a reason to do this, or should I just add an on resize event listener to every class individually?
I realize that as it is, “dynamicLayout” is a sprite, and not has a sprite… perhaps I should use composition to add the listener to the document class itself huh.
ok, on to part two…
my goal is to create a reusable gradient mesh class. I’ve got it almost down… but I’m having trouble with the whole resize issue again, and I know there is a better way to handle the resizing of everything… efficiently… here’s the script, the issue is afterwards…
ActionScript Code:
[LEFT]package [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]display[/COLOR].[COLOR=#000080]GradientType[/COLOR];
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]display[/COLOR].[COLOR=#000080]Sprite[/COLOR];
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]events[/COLOR].[COLOR=#000080]Event[/COLOR];
[COLOR=#0000FF]import[/COLOR] flash.[COLOR=#000080]geom[/COLOR].[COLOR=#000080]Matrix[/COLOR];
[COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**class**[/COLOR] GradientMeshBg [COLOR=#0000FF]extends[/COLOR] Sprite
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] matrix:Matrix;
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] col1:uint;
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] col2:uint;
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] fillType:[COLOR=#0000FF]String[/COLOR] = GradientType.[COLOR=#000080]LINEAR[/COLOR];
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] alphas:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000][[/COLOR][COLOR=#000080]100[/COLOR], [COLOR=#000080]100[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] ratios:[COLOR=#0000FF]Array[/COLOR] = [COLOR=#000000][[/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#000080]255[/COLOR][COLOR=#000000]][/COLOR];
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] matr:Matrix;
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] spreadMethod:[COLOR=#0000FF]String[/COLOR];
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] sWidth:[COLOR=#0000FF]Number[/COLOR];
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**var**[/COLOR] sHeight:[COLOR=#0000FF]Number[/COLOR];
[COLOR=#0000FF]public[/COLOR] [COLOR=#000000]**function**[/COLOR] GradientMeshBg[COLOR=#000000]([/COLOR]color1:uint, color2:uint[COLOR=#000000])[/COLOR]
[COLOR=#000000]{[/COLOR]
col1 = color1;
col2 = color2;
spreadMethod = [COLOR=#FF0000]"SpreadMethod.REPEAT"[/COLOR]; [COLOR=#808080]*//REPEATE, PAD, OR REFLECT*[/COLOR]
addEventListener[COLOR=#000000]([/COLOR]Event.[COLOR=#000080]ADDED_TO_STAGE[/COLOR], added, [COLOR=#000000]**false**[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000000]**true**[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] added[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:Event[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]addEventListener[/COLOR][COLOR=#000000]([/COLOR]Event.[COLOR=#000080]RESIZE[/COLOR], resize, [COLOR=#000000]**false**[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000000]**true**[/COLOR][COLOR=#000000])[/COLOR];
sWidth = [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR];
sHeight = [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR];
matr = [COLOR=#000000]**new**[/COLOR] Matrix[COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]clear[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]beginGradientFill[/COLOR][COLOR=#000000]([/COLOR]fillType, [COLOR=#000000][[/COLOR]col1, col2[COLOR=#000000]][/COLOR], alphas, ratios, matr, spreadMethod[COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]moveTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR], [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]endFill[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#808080]*//this.graphics.drawRoundRect(200, 0, 100, 300, 50);*[/COLOR]
[COLOR=#808080]*//addEventListener(Event.RESIZE, resizer, false, 0, true); *[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#0000FF]private[/COLOR] [COLOR=#000000]**function**[/COLOR] resize[COLOR=#000000]([/COLOR][COLOR=#0000FF]e[/COLOR]:Event[COLOR=#000000])[/COLOR]:[COLOR=#0000FF]void[/COLOR]
[COLOR=#000000]{[/COLOR]
matr.[COLOR=#000080]createGradientBox[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR], [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]clear[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]beginGradientFill[/COLOR][COLOR=#000000]([/COLOR]fillType, [COLOR=#000000][[/COLOR]col1, col2[COLOR=#000000]][/COLOR], alphas, ratios, matr, spreadMethod[COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]moveTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageWidth[/COLOR], [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#0000FF]stage[/COLOR].[COLOR=#000080]stageHeight[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]lineTo[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000080]0[/COLOR], [COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#000080]graphics[/COLOR].[COLOR=#0000FF]endFill[/COLOR][COLOR=#000000]([/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[/LEFT]
pretty simple huh… well here it is… the million dollar question… when you resize a movie that this class is created in… the x, and y of this sprite will not stay at 0,0… unless you add a resize listener to that movie holding this as well. and on resize _mygradientMesh.x = 0; and so on… so that’s the question… i can’t do this.x = 0; inside the resize effect in the class… and i know there is a proper way fo doing this…
I’d really appreciate any help. thanks…