PDA

Volledige versie bekijken : vuurwerk probleem


Fatty Owl
%Europe/Berlin %852 %2005, 21:27
ben pas begonnen aan zo een script voor vuurwerk. Ik ben al redelijk ver(niet zo een korte code als die in de topic in de ASD). Het kan zijn dat er wat onnuttige variablen zijn maar door al die aanpassingen kan weet ik niet welke ik mag verwijderen. Maar nu het probleem: als je meerdere punten tegenlijk wilt afschieten, schiet hij de laast geschoten kapot als de eerst geschoten aangekomen is. dit komt omdat (denk ik)mc10 telkens verandert wordt dus de andere niet meer bestuurd worden. hoe kan ik dit oplossen?
abc = 100;
fps = 12;
i = 0;
g = 0;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 50;
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
function easeTo(target, positie, easespeed, teken, mc5):Void {
if (teken == "_y") {
var mcb = mc5.createEmptyMovieClip("onEnterFrameholder"+abc, 100000+abc);
} else {
var mcb = mc5;
}
if (positie<target[teken]) {
richting = true;
}
if (positie>target[teken]) {
richting = false;
}
if (richting) {
mcb.onEnterFrame = function() {
xprocent = positie/target[teken]*100;
if (positie<target[teken]) {
target[teken] -= target[teken]/positie*easespeed;
if (xprocent>80) {
easespeed -= 0.2;
}
if (xprocent>98) {
delete this.onEnterFrame;
mcb.removeMovieClip();
}
}
};
} else if (!richting) {
mcb.onEnterFrame = function() {
xprocent = positie/target[teken]*100;
if (positie>target[teken]) {
target[teken] += positie/target[teken]*easespeed;
if (xprocent>80) {
easespeed -= 0.2;
}
if (xprocent>98) {
delete this.onEnterFrame;
mcb.removeMovieClip();
}
}
};
}
}
this.onMouseDown = function() {
_global.mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
var mc2 = mc.createEmptyMovieClip("mc"+abc, 888888+abc);
abc++;
var myColor:Color = colors[Math.floor(Math.random()*colors.length)];
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
easeTo(mc, _ymouse, 5, "_y", this);
if (mc10 == undefined) {
_global.mc10 = this.createEmptyMovieClip("abc"+abc, abc+9999999999);
}
mc10.onEnterFrame = function() {
if (timer2 == undefined) {
timer2 = 0;
}
timer2++;
if (timer2>20) {
easespeed = 0;
if (timer == undefined) {
timer = 0;
}
timer++;
if (timer == fps) {
for (e=0; e<41; e++) {
mc5 = _root.createEmptyMovieClip("blast"+e, e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
blasty = true;
randomif = random(4);
if (randomif == 0) {
xpos = mc2._x-random(blastspeed)+blastspeed;
ypos = mc2._y-random(blastspeed)+blastspeed;
} else if (randomif == 1) {
xpos = mc2._x+random(blastspeed)-blastspeed;
ypos = mc2._y+random(blastspeed)-blastspeed;
} else if (randomif == 2) {
xpos = mc2._x+random(blastspeed)-blastspeed;
ypos = mc2._y-random(blastspeed)+blastspeed;
} else if (randomif == 3) {
xpos = mc2._x-random(blastspeed)+blastspeed;
ypos = mc2._y+random(blastspeed)-blastspeed;
}
_root.easeTo(mc5, xpos, 1, "_x", mc5);
_root.easeTo(mc5, ypos, 1, "_y", mc5);
_root.Fade(mc5, 0.01);
}
timer2 = 0;
easeDone = false;
mc10.removeMovieClip();
mc2.removeMovieClip();
mc.removeMovieClip();
timer = 0;
}
}
};
};

Dauntless
%Europe/Berlin %934 %2005, 23:25
Het is heel handig als je dus gewoon een oEF zet op elk aangemaakt object. Zorg er dan ook voor dat alle verwijzingen naar variabelen binnen die oEF naar variabelen van het object zelf zijn.

Ook is het misschien handig om alle stipjes in de 'hoofd mc' te laten verschijnen? Dan moet je gewoon die hoofd mc verwijderen als de knal gedaan is, ipv alle mc's 1 voor 1...

Fatty Owl
%Europe/Berlin %941 %2005, 23:35
ik moet dus zien dat alle variablen binnen het object zelf staan? bedoel je er this. voor te zetten?

ik zal morgen nog eens proberen want nu gaat het mij niet meer lukken... mijn mama (lerares wiskunde) heeft me zojuist cosinus, sinus en tan geleerd(ik heb talent voor wiskunde :D:D:D) maar nu kan ik er niet meer aan uit.

Dauntless
%Europe/Berlin %947 %2005, 23:45
Da's idd handig :p. Ik had ook eerst die dingen in flash geleerd en daarna zagen we het op school... Was voor mij dus allemaal al lang geziene leerstof :p.

Fatty Owl
%Europe/Berlin %366 %2005, 09:48
ik heb het een 'beetje' ingekort abc = 100;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 250;
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
function easeTo(target, speed, endpos, teken, explode):Void {
if (!explode) {
if (teken == "_y") {
mc10 = this.createEmptyMovieClip("onEnterFrameHolder"+e, 1000+e);
} else {
mc10 = this.createEmptyMovieClip("onEnterFrameHolder2"+e, 10000+e);
}
} else {
mc10 = this.createEmptyMovieClip("onEnterFrameHolder2"+abc, 10000+abc);
}
mc10.onEnterFrame = function() {
var mymove = endpos-target[teken];
target[teken] += mymove/speed;
if (Math.abs(target[teken]-endpos)<15) {
if (explode) {
easeDone = true;
delete this.onEnterFrame;
}
}
};
}
this.onMouseDown = function() {
_global.mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
var myColor:Color = colors[Math.floor(Math.random()*colors.length)];
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
easeTo(mc, 8, _ymouse, "_y", true);
this.onEnterFrame = function() {
if (easeDone) {
for (e=0; e<41; e++) {
abcd++;
mc5 = this.createEmptyMovieClip("blast"+e, e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
blasty = true;
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
_root.easeTo(mc5, 8, xpos, "_x", false);
_root.easeTo(mc5, 8, ypos, "_y", false);
_root.Fade(mc5, 0.01);
}
easeDone = false;
mc.removeMovieClip();
}
};
};

@Dauntless ik heb geen idee hoe ik moet beginnen aan alle objecten een oEF te geven.

Dauntless
%Europe/Berlin %420 %2005, 11:05
Dat scriptje zit een beetje vreemd in elkaar... 't Is ook nogal raar om bv 'mc10' te gebruiken als oEF holder of zo, probeer logische, duidelijke variabele namen te gebruiken :). Dat maakt het voor anderen ook simpeler om je script te begrijpen. Probeer anders deze opbouw eens:

onMouseDown = createBall;

functie createBall()
{
#maak nieuwe movie clip aan
#stel _x en _y in
#laat hem easen naar het geklikte punt, het beste met een proto, bv 'easeTo'
}
prototype easeTo()
{
#maak een onEnterFrame vast op 'this' (dan blijft alles dus lokaal)
#laat elke frame de _y waarde sliden
#wnr hij vanboven is laat je hem ontploffen door this.explode(); (waarbij explode ook een prototype is)
}
prototype explode()
{
#bepaal aantal subnodes en sla dat op in 'this'
#doorloop het aantal subnodes en laat ze uit elkaar spatten, elk een EIGEN oEF
#wanneer een subnode op z'n bestemming is laat je 'this.aantalSubNodes' naar beneden gaan en verwijder je de node.oEF.
#wanneer aantalSubNodes = 0 verwijder je 'this'
}

Fatty Owl
%Europe/Berlin %433 %2005, 11:24
ik heb nog niet leren werken met prototype's, is dit hetzelfde als functies? ik veronderstel van niet...

Dauntless
%Europe/Berlin %448 %2005, 11:45
Prototypes kan je uitvoeren OP een movieclip (of andere class), je maakt dan eigenlijk een nieuwe method aan. Zo heb je bv gotoAndPlay(), dat is een method van de movieclip class.

MovieClip.prototype.easeTo = function(){
//hier staan je acties. En 'this' verwijst dan naar de movieclip waarop je de method uitvoert.
}
myMovieClip.easeTo();

Fatty Owl
%Europe/Berlin %463 %2005, 12:06
ok nu ben ik al zeer ver bedankt dauntless, maar nog 1 probleem. Als ik er meerdere tegenlijk doet ontploft de eerst geschoten op de plek van de laatst geschoten en neemt die kleur aan.
abc = 100;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 250;
this.onMouseDown = function() {
_global.myColor = colors[Math.floor(Math.random()*colors.length)];
createBall();
};
function createBall():Void {
_global.mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(mc, 16, _ymouse, _ymouse, "_y", "_y", true, mc);
}
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(target, speed, endpos, endpos2, teken, teken2, explode, mc6) {
mc6.onEnterFrame = function() {
var mymove = endpos-target[teken];
var mymove2 = endpos2-target[teken2];
target[teken] += mymove/speed;
target[teken2] += mymove2/speed;
if (Math.abs(target[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
}
}
};
};
MovieClip.prototype.explode = function() {
this.onEnterFrame = function() {
for (e=0; e<41; e++) {
abcd++;
mc5 = _root.createEmptyMovieClip("blast"+e, e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
this.easeTo(mc5, 5, xpos, ypos, "_x", "_y", false, mc5);
_root.Fade(mc5, 1);
}
easeDone = false;
removeMovieClip(this);
delete this.onEnterFrame;
};
};

Dauntless
%Europe/Berlin %465 %2005, 12:10
Je snapt het principe van de prototypes niet. Je moet de mc waarop je de proto uitoefent NIET meegeven als parameter!!
MovieClip.prototype.easeTo = function(){
trace(this);
}
myMovieClip.easeTo();

Die trace GEEFT AL 'myMovieClip' terug, je moet 'myMovieClip' dus NIET meegeven als parameter.

Fatty Owl
%Europe/Berlin %469 %2005, 12:16
ahja :# dus target kan ik gewoon vervangen door this en weglaten. Dan heb ik dit maar nog steeds hetzelfde probleem. (of moet ik nog iets varanderen?)
abc = 100;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 250;
this.onMouseDown = function() {
_global.myColor = colors[Math.floor(Math.random()*colors.length)];
createBall();
};
function createBall():Void {
_global.mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
}
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
}
}
};
};
MovieClip.prototype.explode = function() {
this.onEnterFrame = function() {
for (e=0; e<41; e++) {
abcd++;
mc5 = _root.createEmptyMovieClip("blast"+e, e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(5, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 1);
}
easeDone = false;
removeMovieClip(this);
delete this.onEnterFrame;
};
};
;

//edit en de laatste ook weg

Dauntless
%Europe/Berlin %475 %2005, 12:24
function createBall():Void {
_global.mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
}
Waarom maak je die mc global? Je zet er een prototype op en van daar uit kan je hem toch gewoon met this. aanspreken dus kan je hem ook verwijderen met this.removeMovieClip(); en zodus is het voor niets nodig dat hij global is

function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
Waarom maak je een functie binnen een functie, en dan nog met dezelfde naam ook? Het gaat zowieso niet om een function aan te maken met function XXXX binnen een andere functie van de vorm function XXX .

MovieClip.prototype.explode = function() {
this.onEnterFrame = function() {
for (e=0; e<41; e++) {
abcd++;
mc5 = _root.createEmptyMovieClip("blast"+e, e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(5, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 1);
}
easeDone = false;
removeMovieClip(this);
delete this.onEnterFrame;
};
};
;

Nu gebruik je een for loop die iets aanmaakt op de _root. Waarom doe je dat? Het is veel simpeler om gewoon ze binnen 'this' aan te maken. Dan moet je gewoon 'this' verwijderen en al je mc's die er in zitten zijn ook weg! Overigens ga je nu bij elke mc die ontploft dezelfde instance namen krijgen (blast0 t.e.m. blast40) en dat gaat ook problemen geven.

En waarom nog altijd die vage variabele namen als mc5 en zo? :)

Fatty Owl
%Europe/Berlin %503 %2005, 13:05
Waarom maak je die mc global? Je zet er een prototype op en van daar uit kan je hem toch gewoon met this. aanspreken dus kan je hem ook verwijderen met this.removeMovieClip(); en zodus is het voor niets nodig dat hij global is.

Ok :)

Waarom maak je een functie binnen een functie, en dan nog met dezelfde naam ook? Het gaat zowieso niet om een function aan te maken met function XXXX binnen een andere functie van de vorm function XXX .

Dit werkt goed dus ik laat het zo staan. Ik heb dit gedaan omdat ik alles wou samenvatte in een functie. Dat van de zelfde naam heb ik perongeluk gedaan , maar ik laat het zo staan want het werkt.

Nu gebruik je een for loop die iets aanmaakt op de _root. Waarom doe je dat? Het is veel simpeler om gewoon ze binnen 'this' aan te maken. Dan moet je gewoon 'this' verwijderen en al je mc's die er in zitten zijn ook weg! Overigens ga je nu bij elke mc die ontploft dezelfde instance namen krijgen (blast0 t.e.m. blast40) en dat gaat ook problemen geven.
instance namen heb ik aangepast en als ik ze op this aanmaak werkt het niet.

En waarom nog altijd die vage variabele namen als mc5 en zo? :)

Geen idee;) maar als ik ze verander en ik vergeet weer iets dan loopt alles in het honderd.

Ok ik weet denk ik waar het aan ligt. mc wordt telkens vervangen, dus als hij de positie's van de blastdots gelijk aan mc zet, dan zet hij die gelijk aan de laatste omdat mcrdoor is vervangen. Hetzelfde is met de kleur. Een idee om dit op te lossen? nu heb ik dit:
abc = 100;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 250;
abcd = 0;
this.onMouseDown = function() {
_global.myColor = colors[Math.floor(Math.random()*colors.length)];
this.createBall();
};
MovieClip.prototype.createBall = function() {
mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
};
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
}
}
};
};
MovieClip.prototype.explode = function() {
this.onEnterFrame = function() {
for (e=0; e<41; e++) {
abcd++;
mc5 = _root.createEmptyMovieClip(this+e, abcd+e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
mc5._x = mc._x;
mc5._y = mc._y;
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(8, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 1);
}
easeDone = false;
removeMovieClip(this);
delete this.onEnterFrame;
};
};

Fatty Owl
%Europe/Berlin %513 %2005, 13:20
ok ik ben al verder, ik heb ze inderdaad op this moeten aanmaken(zoals dauntless zij). Nu nog alleen de kleur abc = 100;
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 250;
abcd = 0;
this.onMouseDown = function() {
_global.myColor = colors[Math.floor(Math.random()*colors.length)];
this.createBall();
};
MovieClip.prototype.createBall = function() {
mc = this.createEmptyMovieClip("startdot_mc"+abc, abc);
abc++;
mc.lineStyle(4, myColor, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
};
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
}
}
};
};
MovieClip.prototype.explode = function() {
this.onEnterFrame = function() {
this.clear();
delete this.onEnterFrame;
for (e=0; e<41; e++) {
abcd++;
mc5 = this.createEmptyMovieClip(this+e, abcd+e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(8, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 1);
}
easeDone = false;
};
};

Fatty Owl
%Europe/Berlin %595 %2005, 15:17
nog korter: (nog steeds de kleuen) colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 200;
abcd = 0;
this.onMouseDown = function() {
this.createBall();
};
MovieClip.prototype.createBall = function() {
mc = this.createEmptyMovieClip("startdot_mc"+abcd, abcd);
abcd++;
mc.lineStyle(4, myColor=colors[Math.floor(Math.random()*colors.length)], 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
};
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
delete this.onEnterFrame;
}
}
};
};
MovieClip.prototype.explode = function() {
this.clear();
for (e=0; e<41; e++) {
abcd++;
mc5 = this.createEmptyMovieClip(this+e, abcd+e);
mc5.lineStyle(4, myColor, 100);
mc5.lineTo(1, 1);
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(8, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 10);
}
easeDone = false;
};

Dauntless
%Europe/Berlin %598 %2005, 15:21
mc.lineStyle(4, myColor=colors[Math.floor(Math.random()*colors.length)], 100);


Laat me raden, dit zag je zeker in de tooltip staan? als er staat color=0x000000 dan wilt dat zeggen dat die paramater de kleur voorstelt, en dat het een hexadecimale waarde is.
Jij wilt dus:

mc.lineStyle(4, colors[Math.floor(Math.random()*colors.length)], 100);

Fatty Owl
%Europe/Berlin %600 %2005, 15:25
neej ik had getest of dat werke, en het werkt. als ik het op jouw manier doe wordt de variable mycolor niet gezet. (eigenlijk doet de code die ik gezet heb hetzelfde alsmyColor=colors[Math.floor(Math.random()*colors.length)]
mc.lineStyle(4, myColor, 100);
alleen korter :). en ik weet niet wat tooltip is?

Dauntless
%Europe/Berlin %603 %2005, 15:29
(eigenlijk doet de code die ik gezet heb hetzelfde alsmyColor=colors[Math.floor(Math.random()*colors.length)]
mc.lineStyle(4, myColor, 100);
alleen korter :).
Nee. Je zit even mis met basisch principes in programeren.
myColors = colors....; is een toekenning, je slaat dus een waarde op in de myColors variabele.
MAAR bij lineStyle(4, myColor, 100); heb je dus de waarde van myColors nodig. Ofwel sla je hem dus eerst op in een aparte var (myColor) en gebruik je die, ofwel zet je rechtstreeks die colors[...] daar. Maar je kan geen 'toekenning' gebruiken waar je de waarde van het rechter lid nodig hebt...

Dit is slecht uigelegd, i know, maar dit kan toch ook niet?
gotoAndPlay(frame=50); ?

Fatty Owl
%Europe/Berlin %607 %2005, 15:34
Dat begrijp ik, dat dacht ik eerst ook. maar het werkt wel zo. daar zit ook niet het probleem. het probleem zit er met de kleur van de bolletjes bij de ontploffing, die nemen de kleur aan van de laatst afgeschoten. Dit blijft als ik nu jouw of mijn manier gebruik.
//edit oh ja doe dit eens: gotoAndStop(frame=20)
trace(frame) werkt wel :D . is dit nu een bug in flash dan?

Dauntless
%Europe/Berlin %613 %2005, 15:42
Die trace is logisch, maar het feit dat die gotoAndPlay ook de juiste waarde neemt vind ik vreemder...

Sla bij het aanmaken van de hoofdbol de kleur op in de movieclip. Dan moet je hem doorgeven tot dat je hem kan gebruiken bij het aanmaken van die kleine bolletjes. In principe moet je hem maar 1x instellen, aangezien je altijd op dezelfde tijdlijn werkt. Maar dan wel natuurlijk weer this.parentColor of zo :)

Fatty Owl
%Europe/Berlin %646 %2005, 16:31
ok als ik van de prototype dit maakMovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
var color:Color = this._parent.myColor;
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
delete this.onEnterFrame;
}
}
};
}; en ik trace color in de for loop traced hij undefined. als ik deze trace in deze prototype traced hij juist. en de variablen staan dan toch op dezelfde timeline dus zou die het in het eerste geval toch ook juist moeten doen?

Dauntless
%Europe/Berlin %650 %2005, 16:36
Zoals ik al een tijdje zeg: je moet die kleur opslaan in de movieclip!!
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF];
blastspeed = 200;
abcd = 0;
this.onMouseDown = function() {
this.createBall();
};
MovieClip.prototype.createBall = function() {
mc = this.createEmptyMovieClip("startdot_mc"+abcd, abcd);
abcd++;
mc.myColors = colors[Math.floor(Math.random()*colors.length)]
mc.lineStyle(4, mc.myColors, 100);
mc._x = _xmouse;
mc._y = 400;
mc.lineTo(1, 1);
mc.easeTo(16, _ymouse, _ymouse, "_y", "_y", true);
};
function Fade(target, FadeSpeed):Void {
var interval:Number = setInterval(Fade, FadeSpeed);
function Fade():Void {
target._alpha--;
if (target._alpha<0) {
target._alpha = 100;
target.removeMovieClip();
clearInterval(interval);
}
}
}
MovieClip.prototype.easeTo = function(speed, endpos, endpos2, teken, teken2, explode) {
this.onEnterFrame = function() {
var mymove = endpos-this[teken];
var mymove2 = endpos2-this[teken2];
this[teken] += mymove/speed;
this[teken2] += mymove2/speed;
if (Math.abs(this[teken]-endpos)<15) {
if (explode) {
this.explode();
easeDone = true;
delete this.onEnterFrame;
}
}
};
};
MovieClip.prototype.explode = function() {
this.clear();
for (e=0; e<41; e++) {
abcd++;
mc5 = this.createEmptyMovieClip(this+e, abcd+e);
mc5.lineStyle(4, this.myColors, 100);
mc5.lineTo(1, 1);
xpos = Math.round(Math.random()*blastspeed*2)-100;
ypos = Math.round(Math.random()*blastspeed*2)-100;
mc5.easeTo(8, xpos, ypos, "_x", "_y", false);
_root.Fade(mc5, 10);
}
easeDone = false;
};
:)

Fatty Owl
%Europe/Berlin %653 %2005, 16:40
oh ja zo gaat dat ook. ok hij is af bedankt:D dan ga ik nu naar de as dissc en schowcase

SaphuA
%Europe/Berlin %655 %2005, 16:44
Je moet color niet als een varaible naam gebruiken, is Flash niet zo blij mee (daarom kleurt hij ook blauw ;))

Het gebruik hiervan:gotoAndStop(frame=20);
trace(frame);
trace(_currentframe);Is zeker logisch.
Dat is vergelijkbaar met:frame = test=2;