PDA

Volledige versie bekijken : Depth probleem


Fatty Owl
%Europe/Berlin %830 %2005, 20:55
Hier is mijn code, hij is redelijk lang maar er is een probleem. het onderste stukje over depth doet het niet. alleen als hij 2 traced werkt het, bij 1 niet.
var i = 0;
var speed = 0;
var maxspeed = 50;
var gas = undefined;
var fps = 12;
var tijd = 0;
var teller = 0;
var depthauto = this.auto_mc.getDepth();
this.onEnterFrame = function() {
if (Key.isDown(Key.RIGHT)) {
gas = true;
} else if (Key.isDown(Key.LEFT)) {
gas = false;
} else {
gas = undefined;
}
if (gas == true) {
if (i<maxspeed) {
speed = i;
i += 0.2;
} else {
speed = maxspeed;
}
}
if (gas == false) {
if (i>0) {
speed = i;
i -= 0.4;
} else {
speed = 0;
}
}
if (gas == undefined) {
if (i>0) {
speed = i;
i -= 0.2;
} else {
speed = 0;
i = 0;
}
}
weg_mc._x -= speed;
muur2._x -= speed;
if (weg_mc._x<-600) {
weg_mc._x = 0;
}
if (weg_mc._x>0) {
weg_mc._x = -600;
}
if (speed>5) {
if (Key.isDown(Key.UP)) {
this.auto_mc._y -= 5;
this.auto_mc._x += 5;
}
if (Key.isDown(Key.DOWN)) {
this.auto_mc._y += 5;
this.auto_mc._x -= 5;
}
}
this.auto_mc.wiel_mc._rotation -= speed;
this.auto_mc.wiel2_mc._rotation -= speed;
if (auto_mc._y>115.5) {
auto_mc._y = 115.5;
auto_mc._x = 173.5;
}
if (auto_mc._y<0) {
auto_mc._y = 0;
auto_mc._x = 290.5;
}
teller += 1;
if (teller == fps) {
tijd += 1;
teller = 0;
}
if (tijd == 5) {
pos = random(2)+1;
if (pos == 1) {
trace("1");
xpos = 414.9;
ypos = 110.2;
depth = 1;
trace(depth);
} else if (pos == 2) {
trace("2");
xpos = 414.9;
ypos = 27.1;
depth = depthauto-1;
trace(depth);
}
this.muur2.removeMovieClip();
tijd = 0;
this.attachMovie("muur", "muur2", depth);
setProperty("muur2", _x, 0+xpos);
setProperty("muur2", _y, 0+ypos);
}
};


veel plezier.

Fatty Owl
%Europe/Berlin %869 %2005, 21:51
ik heb juist gemerkt dat, hij soms wel heel rare dingen doet. ik post de fla eventjes.


1 reputatiepunt voor degene die het oplost :D

SaphuA
%Europe/Berlin %884 %2005, 22:13
Edit: Gelijk maar alles gefixed :)
Hij zou moeten werken nu...
Je moet echt proberen je code wat geordener te houden, en zeker van die Flash 4 syntax af zien te komen!

var i = 0;
var speed = 0;
var maxspeed = 50;
var fps = 24;
var tijd = 0;
var teller = 0;
auto_mc.swapDepths(2);
this.onEnterFrame = function() {
if (Key.isDown(Key.RIGHT)) {
if (i<maxspeed) {
speed = i;
i += 0.2;
} else {
speed = maxspeed;
}
} else if (Key.isDown(Key.LEFT)) {
if (i>0) {
speed = i;
i -= 0.4;
} else {
speed = 0;
}
} else {
if (i>0) {
speed = i;
i -= 0.2;
} else {
speed = 0;
i = 0;
}
}
weg_mc._x -= speed;
muur_mc._x -= speed;
if (weg_mc._x<-600) {
weg_mc._x = 0;
} else if (weg_mc._x>0) {
weg_mc._x = -600;
}
if (speed>5) {
if (Key.isDown(Key.UP)) {
auto_mc._y -= 5;
auto_mc._x += 5;
} else if (Key.isDown(Key.DOWN)) {
auto_mc._y += 5;
auto_mc._x -= 5;
}
}
auto_mc.wiel1_mc._rotation -= speed;
auto_mc.wiel2_mc._rotation -= speed;
if (auto_mc._y>115.5) {
auto_mc._y = 115.5;
auto_mc._x = 173.5;
} else if (auto_mc._y<0) {
auto_mc._y = 0;
auto_mc._x = 290.5;
}
if (++teller == fps) {
tijd++;
teller = 0;
}
if (tijd == 8) {
pos = random(2)+1;
if (pos == 1) {
xpos = 580;
ypos = 110;
depth = auto_mc.getDepth()+1;
} else if (pos == 2) {
xpos = 580;
ypos = 27;
depth = auto_mc.getDepth()-1;
}
tijd = 0;
removeMovieClip("muur_mc");
attachMovie("muur", "muur_mc", depth);
muur_mc._x = xpos;
muur_mc._y = ypos;
}
};

Fatty Owl
%Europe/Berlin %895 %2005, 22:29
kan je mij zeggen wat je allemaal verandert hebt, en wat flash 4 syntax is :#

//edit je hebt zie ik redelijk wat ingekort, maar welk van mijn dingen flash 4 syntax is weet ik nog niet :X

oh ja hier is je reputatiepunt :D

SaphuA
%Europe/Berlin %905 %2005, 22:44
Flash 4 syntax is de de verouderde manier van code wat in de Flash 4 versie gebruikt werd: setProperty("muur2", _x, 0+xpos);
Deze is vervangen door de 'dot'-syntax van Flash 5: muur2._x = 0+xpos;

Ik heb idd best een hoop code veranderd, ik vond het oude nogal slordig.
- Wat is bijv. het nut om '0+' voor een waarde te zetten?
- Je maakte geen gebruik van if-else constructies.
var a = random(2);
this.onEnterFrame = function(){
if(a) {
trace("yes")
}
if(!a) {
trace("no");
}
var a = random(2);
}
Is hetzelfde als:
var a = random(2);
this.onEnterFrame = function(){
if(a) {
trace("yes")
} else {
trace("no");
}
var a = random(2);
}
Alleen is de 2e manier minder CPU intensief.
- Bij de key-events gaf je een variable een bepaalde waarde. Daarna keek je naar de waarde van die variable en riep je een code aan. Ik heb deze code gewoon in de juiste key-events gezet.

Dat waren de belangrijkste veranderingen :)

Dauntless
%Europe/Berlin %907 %2005, 22:46
random(X) is ook deprecated... Gebruik Math.random(); :)

Fatty Owl
%Europe/Berlin %908 %2005, 22:48
Ok dat van setProperty, ik dacht dat je daarmee dynamisch gemaakte dingen de eerste keer moest instellen :#. die 0+ stond er omdat het anders niet werkte, maar dat is niet belangrijk want dat is niet meer nodig :D.

phoe, ik blijk tegenwoordig moeite te hebben met normale nederlandse zinnen te formuleren :S

// dat van math.random wist ik maar ik kan het mezelf maar niet afleren de korte versie te gebruiken :P :D :) :S :O allowel het moet lukken ik heb root namelijk ook afgeleerd :D

theFlashWizard
%Europe/Berlin %272 %2005, 07:32
is ook moeilijk af te leren, spreek ik uit ervaring. maar zet die nieuwe manier is in een functie apart en noem die functie bijv makeRandom ofzo waarbij je een min en max argument kan opgeven. omdat het dan makeRandom(min,max) wordt ipv bijv random(max-min)+min wordt heb je et zo afgeleerd ;)

SaphuA
%Europe/Berlin %328 %2005, 08:53
Yup ik heb dat probleem ook ;)
Idd lastig af te leren, maar het maakt niet zo veel uit als het effect van het random nummer niet veel uitmaakt.
De oude random is namenlijk minder random als de nieuwe 8~ [?] (Ok lekker verwarrend op de vroege morgen)
Dus tenzij je een casino spel wilt maken, kun je gewoon de oude random gebruiken ;)

theFlashWizard
%Europe/Berlin %816 %2005, 20:35
hmm maar als je het zo maakt dat je een minimaal en maximaal parameter mee kan geven kan het wellis makkelijker zijn.. daar kom ik de laatste tijd wel achter..