PDA

Volledige versie bekijken : application runnen


W0utR
%Europe/Berlin %831 %2008, 20:58
Ik zit hier met een probleem

Ik heb hier het volgende gemaakt:
package {
import flash.display.MovieClip;
import flash.display.Sprite;

public class backgroundCubesV2 extends Sprite
{
private var cubeWidth:uint;
private var cubesWidth:uint;
private var cubesHeight:uint;
private var cubeX:uint = 0;
private var cubeY:uint = 0;

public function backgroundCubesV2(cubeWidth:uint)
{
cubeWidth = this.cubeWidth;
cubesWidth = Math.round(stage.stageWidth / cubeWidth);
cubesHeight = Math.round(stage.stageHeight / cubeWidth);

for(var i:uint = 0; i < cubesWidth; i++)
{
for(var j:uint = 0; j < cubesHeight; j++)
{
var cube:MovieClip = new MovieClip();
cube.graphics.beginFill(0x000000);
cube.graphics.drawRect(cubeX, cubeY, cubeWidth, cubeWidth);
cube.graphics.endFill();

this.addChild(cube);

cubeX += cubeWidth;
}
cubeX = 0;
cubeY += cubeWidth;
}
}
}
}


vrij basis, maar nu komt het probleem, ik moet 1 parameter meegeven om het te kunnen runnen, dus heb ik gewoon een nieuwe actionscript file gemaakt:
// ActionScript file
var cube:backgroundCubesV2 = new backgroundCubesV2(20);

Maar nu blijf ik deze error krijgen:
ArgumentError: Error #1063: Argument count mismatch on backgroundCubesV2(). Expected 1, got 0.

en alles ik de gewone AS file run krijg ik deze error:
http://mt14.quickshareit.com/share/afbeelding1a08bb.png

Weet iemand misschien wat ik moet doen om mijn programma te laten runnen?

Jan
%Europe/Berlin %904 %2008, 22:42
Zou eigenlijk gewoon moeten werken zo.(maak eventueel je cache eens leeg) Er lijkt me niks mis met het aantal arguments.

Maar je probeert wel properties van de stage te gebruiken in je constructor terwijl op dat moment die instance nog niet op stage is toegevoegd.

Dus ofwel stage meesturen als argument,
of een functie in je class die je kan aanroepen nadat je addChild(cube) gedaan hebt,
of naar het ADDED_TO_STAGE event luisteren in je class en daarna pas naar de stage refereren.
En ook de eerste regel van je constructor aanpassen:
public function backgroundCubesV2(cubeWidth:uint)
{
cubeWidth = this.cubeWidth;

moet omgekeerd natuurlijk.

package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.*;

public class backgroundCubesV2 extends Sprite
{
private var cubeWidth:uint;
private var cubesWidth:uint;
private var cubesHeight:uint;
private var cubeX:uint = 0;
private var cubeY:uint = 0;

public function backgroundCubesV2(cubeWidth:uint)
{
this.cubeWidth = cubeWidth;
addEventListener(Event.ADDED_TO_STAGE, addedToStageListener);
}
private function addedToStageListener(e)
{
cubesWidth = Math.round(stage.stageWidth / cubeWidth);
cubesHeight = Math.round(stage.stageHeight / cubeWidth);

for(var i:uint = 0; i < cubesWidth; i++)
{
for(var j:uint = 0; j < cubesHeight; j++)
{
var cube:MovieClip = new MovieClip();
cube.graphics.beginFill(0x000000);
cube.graphics.drawRect(cubeX, cubeY, cubeWidth, cubeWidth);
cube.graphics.endFill();

this.addChild(cube);

cubeX += cubeWidth;
}
cubeX = 0;
cubeY += cubeWidth;
}
}
}
}

En vanzelfsprekend moet je ook addChild() doen als je iets wil zien:
var cube:backgroundCubesV2 = new backgroundCubesV2(20);
addChild(cube);

Groeten,
http://users.telenet.be/jansurf/cwo.png Jan

Sjoedzj
%Europe/Berlin %661 %2008, 16:52
Ik heb een vergelijkbaar probleem gehad. Ik heb het verder niet echt opgelost maar misschien heb je aan deze thread wat.

nieuw object maken met behulp van constructor geeft errors (http://www.flashfocus.nl/forum/showthread.php?t=42899)