Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-08-2004, 06:14   #1 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
fehler suche/frage zum tut "tile based games" - auf tonypa.pri.ee

Hi!

irgendwie finde ich meinen Fehler nicht...grml

Es geht um Items-sammeln auf verschiedenen Maps!

Ich habe eigentlich alles exakt so gemacht wie im Tut beschrieben, nur dass ich 3 Maps habe und das Problem ist, dass wenn ich von einer map zur anderen gehe (nur beim rückwärts durch gehen der maps, wenn ich richtig getestet habe), die Items (zum einsammeln) von der map von der man auf die vorige gewechselt ist weiterhin sichtbar sind...
(ja-ich habe den bug-fix auf der site wahrgenommen - aber mein prob. scheint woanders zu liegen!?!?)

ich habe die dazugehörigen functions mindestens jede 10 mal ganz genau durchgeschaut und konnte einefach nichts finden...

...kann mir da jemand sagen wo mein fehler ist?

ich habe einfach mal meinen kompletten code gepostet, falls das problem doch woanders liegen sollte:
(fla zum testen ist auch unten dabei)

ActionScript:
  1. _root.attachMovie("empty", "detectKeysoEF", 10002);
  2. detectKeysoEF.onEnterFrame = function () {
  3.     _root.detectKeys();
  4. }
  5.  
  6. myMap1 = [
  7.     [1,1,1,1,1,1,1,1,1,1],
  8.     [1,0,0,0,0,0,0,0,0,1],
  9.     [1,0,0,0,0,0,0,0,0,1],
  10.     [1,0,1,1,1,0,1,0,0,1],
  11.     [1,0,1,0,1,0,1,0,0,1],
  12.     [1,0,1,0,1,0,1,0,0,1],
  13.     [1,0,1,0,1,1,1,1,0,1],
  14.     [1,0,0,0,0,0,0,1,0,1],
  15.     [1,0,0,0,0,0,0,1,0,2],
  16.     [1,1,1,1,1,1,1,1,1,1]
  17. ];
  18.  
  19. myMap2 = [
  20.     [1,1,1,1,1,1,1,1,1,1],
  21.     [1,0,0,0,0,0,0,0,0,1],
  22.     [1,0,0,0,0,0,0,0,0,1],
  23.     [1,0,1,1,1,0,0,0,0,1],
  24.     [1,0,1,4,1,0,0,0,0,1],
  25.     [1,0,1,0,1,0,0,0,0,1],
  26.     [1,0,1,0,1,1,1,1,0,1],
  27.     [1,0,1,0,0,0,0,1,0,1],
  28.     [3,0,1,0,0,0,0,0,0,1],
  29.     [1,1,1,1,1,1,1,1,1,1]
  30. ];
  31.  
  32. myMap3 = [
  33. /*0*/[1,1,1,1,1,1,1,1,1,1],
  34. /*1*/[1,0,0,0,0,0,0,0,0,1],
  35. /*2*/[1,0,0,0,0,0,0,0,0,1],
  36. /*3*/[1,0,1,1,1,1,0,1,0,1],
  37. /*4*/[1,0,1,5,0,0,1,0,0,1],
  38. /*5*/[1,0,1,1,1,0,0,0,0,1],
  39. /*6*/[1,0,1,0,1,0,1,1,0,1],
  40. /*7*/[1,0,1,0,0,0,1,1,0,1],
  41. /*8*/[1,0,0,0,1,0,1,0,0,1],
  42. /*9*/[1,1,1,1,1,1,1,1,1,1]
  43. ];
  44.  
  45. myItems = [
  46.     [0],
  47.     [[1,1,2],[2,5,5],[1,3,5]],
  48.     [[2,1,1],[2,6,7],[1,3,5]],
  49.     [[1,6,3],[1,3,6],[2,7,8]]
  50. ];
  51.  
  52. game = {tileW:30, tileH:30, currentMap:1, points:0};
  53. game.TileClass = function () {};
  54. game.TileClass.prototype.walkable = false;
  55. game.TileClass.prototype.frame = 20;
  56. game.Tile0 = function () {};
  57. game.Tile0.__proto__ = TileClass.prototype;
  58. game.Tile0.prototype.walkable = true;
  59. game.Tile0.prototype.frame = 1;
  60. game.Tile1 = function () {};
  61. game.Tile1.__proto__ = TileClass.prototype;
  62. game.Tile1.prototype.frame = 2;
  63.  
  64. game.Doors = function (newMap, newcharx, newchary) {
  65.     this.newMap = newMap;
  66.     this.newcharx = newcharx;
  67.     this.newchary = newchary;
  68. };
  69. game.Doors.prototype.walkable = true;
  70. game.Doors.prototype.frame = 3;
  71. game.Doors.prototype.door = true;
  72. game.Tile2 = function () {};
  73. game.Tile2.prototype = new game.Doors(2, 1, 8);
  74. game.Tile3 = function () {};
  75. game.Tile3.prototype = new game.Doors(1, 8, 8);
  76. game.Tile4 = function () {};
  77. game.Tile4.prototype = new game.Doors(3, 4, 4);
  78. game.Tile5 = function () {};
  79. game.Tile5.prototype = new game.Doors(2, 3, 5);
  80.  
  81. game.Item1 = function () {};
  82. game.Item1.prototype.points = 1;
  83. game.Item2 = function () {};
  84. game.Item2.prototype.points = 10;
  85.  
  86. char = {xtile:1, ytile:1, speed:15};
  87.  
  88. function buildMap (Map) {
  89.     _root.attachMovie("empty", "tiles", ++d);
  90.     game.clip = _root.tiles;
  91.     var mapWidth = Map[0].length;
  92.     var mapHeight = Map.length;
  93.     for (i = 0; i < mapHeight; i++) {
  94.         for (j = 0; j < mapWidth; j++) {
  95.             var name = "t_"+i+"_"+j;
  96.             game[name] = new game["Tile"+Map[i][j]];
  97.             game.clip.attachMovie("tile", name, i*100+j*2);
  98.             game.clip[name].gotoAndStop(game["Tile"+Map[i][j]].frame);
  99.             game.clip[name]._x = j*game.tileW;
  100.             game.clip[name]._y = i*game.tileH;
  101.             game.clip[name].gotoAndStop(game[name].frame);
  102.         }
  103.     }
  104.     game.items = myItems[game.currentMap];
  105.     for (var i = 0; i<game.items.length; i++) {
  106.         var name = "item"+game.items[i][2]+"_"+game.items[i][1];
  107.         game[name] = new game["Item"+game.items[i][0]];
  108.         game[name].posi = i;
  109.         game.clip.attachMovie("Items", name, 10001+i);
  110.         game[name].clip = game.clip[name];
  111.         game[name].clip._x = game.items[i][1]*game.tileW+game.tileW/2;
  112.         game[name].clip._y = game.items[i][2]*game.tileH+game.tileH/2;
  113.         game[name].clip.gotoAndStop(game.items[i][0]);
  114.     }
  115.     _root.points = game.points;
  116.     game.clip.attachMovie("char", "char", 10000);
  117.     char.clip = game.clip.char;
  118.     char.x = (char.xtile*game.tileW)+game.tileW/2;
  119.     char.y = (char.ytile*game.tileH)+game.tileH/2;
  120.     char.width = char.clip._width/2;
  121.     char.height = char.clip._height/2;
  122.     char.clip._x = char.x;
  123.     char.clip._y = char.y;
  124.     char.clip.gotoAndStop(char.frame);
  125. }
  126.  
  127. function changeMap (ob) {
  128.     var tempitems=[];
  129.     for (var i = 0; i<game.items.length; ++i) {
  130.         if(game.items[i]) {
  131.             var name = "item"+game.items[i][2]+"_"+game.items[i][1];
  132.             delete game[name];
  133.             tempitems.push(game.items[i]);
  134.         }
  135.     }
  136.     myItems[game.currentMap]=tempitems;
  137.     var name = "t_"+ob.ytile+"_"+ob.xtile;
  138.     game.currentMap = game[name].newMap;
  139.     ob.ytile = game[name].newchary;
  140.     ob.xtile = game[name].newcharx;
  141.     ob.frame = ob.clip._currentframe;
  142.     buildMap(_root["myMap"+game.currentMap]);
  143. }
  144.  
  145. function moveChar(ob, dirx, diry) {
  146.     getMyCorners (ob.x, ob.y+ob.speed*diry, ob);
  147.     if (diry == -1) {
  148.         if (ob.upleft and ob.upright) {
  149.             ob.y += ob.speed*diry;
  150.         } else {
  151.             ob.y = ob.ytile*game.tileH+ob.height;
  152.         }
  153.     }
  154.     if (diry == 1) {
  155.         if (ob.downleft and ob.downright) {
  156.             ob.y += ob.speed*diry;
  157.         } else {
  158.             ob.y = (ob.ytile+1)*game.tileH-ob.height;
  159.         }
  160.     }
  161.     getMyCorners (ob.x+ob.speed*dirx, ob.y, ob);
  162.     if (dirx == -1) {
  163.         if (ob.downleft and ob.upleft) {
  164.             ob.x += ob.speed*dirx;
  165.         } else {
  166.             ob.x = ob.xtile*game.tileW+ob.width;
  167.         }
  168.     }
  169.     if (dirx == 1) {
  170.         if (ob.upright and ob.downright) {
  171.             ob.x += ob.speed*dirx;
  172.         } else {
  173.             ob.x = (ob.xtile+1)*game.tileW-ob.width;
  174.         }
  175.     }
  176.     ob.clip._x = ob.x;
  177.     ob.clip._y = ob.y;
  178.     ob.clip.gotoAndStop(dirx+diry*2+3);
  179.     ob.xtile = Math.floor(ob.clip._x/game.tileW);
  180.     ob.ytile = Math.floor(ob.clip._y/game.tileH);
  181.     if (game["t_"+ob.ytile+"_"+ob.xtile].door and ob==_root.char) {
  182.       changeMap (ob);
  183.     }
  184.     var itemname = game["item"+ob.ytile+"_"+ob.xtile];
  185.     if (itemname && ob == _root.char) {
  186.         game.points += itemname.points;
  187.         _root.points = game.points;
  188.         removeMovieClip(itemname.clip);
  189.         game.items[itemname.posi]=0;
  190.         delete game["item"+ob.ytile+"_"+ob.xtile];
  191.     }
  192.     return (true);
  193. }
  194.  
  195. function detectKeys () {
  196.     var ob = _root.char;
  197.     var keyPressed = false;
  198.     if (Key.isDown(Key.RIGHT)) {
  199.         keyPressed = _root.moveChar(ob, 1, 0);
  200.     } else if (Key.isDown(Key.LEFT)) {
  201.         keyPressed = _root.moveChar(ob, -1, 0);
  202.     } else if (Key.isDown(Key.UP)) {
  203.         keyPressed = _root.moveChar(ob, 0, -1);
  204.     } else if (Key.isDown(Key.DOWN)) {
  205.         keyPressed = _root.moveChar(ob, 0, 1);
  206.     }
  207.     if (!keyPressed) {
  208.         ob.clip.char.gotoAndStop(1);
  209.     } else {
  210.         ob.clip.char.play();
  211.     }
  212. }
  213.  
  214. function getMyCorners (x, y, ob) {
  215.   ob.downY = Math.floor((y+ob.height-1)/game.tileH);
  216.   ob.upY = Math.floor((y-ob.height)/game.tileH);
  217.   ob.leftX = Math.floor((x-ob.width)/game.tileW);
  218.   ob.rightX = Math.floor((x+ob.width-1)/game.tileW);
  219.   ob.upleft = game["t_"+ob.upY+"_"+ob.leftX].walkable;
  220.   ob.downleft = game["t_"+ob.downY+"_"+ob.leftX].walkable;
  221.   ob.upright = game["t_"+ob.upY+"_"+ob.rightX].walkable;
  222.   ob.downright = game["t_"+ob.downY+"_"+ob.rightX].walkable;
  223. }
  224.  
  225. buildMap(_root["myMap"+game.currentMap]);
  226. stop();

danke
Robert

P.s: gehört das hier hin oder ins OOP-board?
wenn ins oop board, dann kann das ja vielleicht nen mod verschieben?!thx

Edit:
ich habe doch etwas anders gemacht... ich habe bei den items statt "position" "posi" benutzt, da ab mx ja position für sound.position verwendet wird!
Angehängte Dateien
Dateityp: zip ff-tilebasegame.zip (5,1 KB, 7x aufgerufen)

Geändert von pape (07-08-2004 um 06:24 Uhr)
pape ist offline   Mit Zitat antworten
Alt 07-08-2004, 11:46   #2 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
die alten item clips werden nicht entladen, so liegen sie immernoch auf den
anderen screens rum. einfach die zeile wo der kommentar steht ergänzen.

ActionScript:
  1. function changeMap (ob) {
  2.     var tempitems=[];
  3.     for (var i = 0; i<game.items.length; ++i) {
  4.         if(game.items[i]) {
  5.             var name = "item"+game.items[i][2]+"_"+game.items[i][1];
  6.             game[name].clip.removeMovieClip(); //das hat gefehlt!!!
  7.             delete game[name];
  8.             tempitems.push(game.items[i]);
  9.         }
  10.     }
  11.     myItems[game.currentMap]=tempitems;
  12.     var name = "t_"+ob.ytile+"_"+ob.xtile;
  13.     game.currentMap = game[name].newMap;
  14.     ob.ytile = game[name].newchary;
  15.     ob.xtile = game[name].newcharx;
  16.     ob.frame = ob.clip._currentframe;
  17.     buildMap(_root["myMap"+game.currentMap]);
  18. }
__________________
elias ist offline   Mit Zitat antworten
Alt 07-08-2004, 17:03   #3 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
DANKE!

wirklich vielen Dank fürs lesen und helfen!

.. aber komisch oder?
auf der site steht nix davon und dabei haben die da doch grade diesen Bug angeblich gefixed!?..naja.. jetzt gehts ja

noch mal thx!

Robert

Edit:
habe denen jetzt mal ne email geschrieben, das es fehlt und dass position ab mx schon belegt ist vom sound objekt.

aber diese zeile... hätte mir echt mal selber auffallen könen dass die fehlt...grml...

Geändert von pape (07-08-2004 um 17:16 Uhr)
pape ist offline   Mit Zitat antworten
Alt 07-08-2004, 17:29   #4 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
kein prob! hab aber auch ne stunde rumgetraced

position ist nur belegt wenn du auf ein sound objekt zugreifst,
sollte es eigentlich keine probs geben.
__________________
elias ist offline   Mit Zitat antworten
Alt 07-08-2004, 18:20   #5 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Zitat:
Zitat von binary blade
kein prob! hab aber auch ne stunde rumgetraced
naja... dann noch mehr danke

mit dem position habe ich einfach mal aus sicherheit von anfang an geändert... hätte jasein können dass da was schief geht .. und dann sitzt man später wieder da und weiß nicht warum...
pape ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele