Heim >Web-Frontend >H5-Tutorial >HTML5 lufylegend implementiert Scrolls im Spiel _html5 Tutorial-Fähigkeiten

HTML5 lufylegend implementiert Scrolls im Spiel _html5 Tutorial-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:45:571977Durchsuche

lufylegend ist eine HTML5-Open-Source-Engine, die die HTML5-Entwicklung mit ActionScript 3.0-ähnlicher Syntax implementiert. Sie umfasst LSprite, LBitmapData, LBitmap, LURLLoader, LTextField, LEvent und viele andere Klassen, die AS-Entwicklern bekannt sind. Opera, IE9, IOS, Android und andere beliebte Umgebungen. Mit lufylegend können Sie auf einfache Weise objektorientierte Programmierung verwenden und mit Box2dWeb zusammenarbeiten, um Physikspiele zu erstellen. Darüber hinaus verfügt es über eine integrierte LTweenLite-Beschleunigungsklasse und andere sehr praktische Funktionen Steigen Sie schneller in die Welt von HTML5 ein!
Was ist eine Schriftrolle?
Schüler, die RPG oder Side-Scrolling-Kämpfe gespielt haben, sollten wissen, dass sich die Karte aufgrund der Größe der Karte bewegt, nachdem sie in die Mitte des Bildschirms gegangen ist Der Charakter wird relativ stationär bleiben. Das ist die legendäre Schriftrolle. Das Bild unten ist zum Beispiel die Schriftrolle in meinem Spiel „Three Kingdoms Front“:


Mit der obigen Einführung sollte jeder verstehen, was eine Schriftrolle ist. Um es ganz klar auszudrücken: Es ist der Effekt, dass die Kamera dem Protagonisten folgt. Als nächstes werden wir die Spiel-Engine von lufylegend.j verwenden, um diesen Effekt zu erzielen.
Einführung in das Prinzip
Tatsächlich liegt der Schlüssel zum Erreichen dieses Effekts darin, wie man den Charakter ruhig macht, wann man die Karte bewegt und wie man die Karte bewegt. Bevor wir diese beiden Probleme untersuchen, erstellen wir zunächst eine gut strukturierte Bühnenebene (und ein LSprite-Objekt) für spätere Vorgänge. Die Bühnenstruktur ist wie folgt:
- Bühnenebene
|
- Kartenebene
|
- Zeichenebene
Es ist ersichtlich, dass die Bühnenebene das übergeordnete Element ist Die Kartenebene und die Zeichenebene, und die Zeichenebene befindet sich über der Kartenebene, schließlich steht der Charakter auf der Karte. Wir wissen, dass die Koordinaten des untergeordneten Objekts relativ zum übergeordneten Objekt sind. Wenn also das übergeordnete Objekt verschoben wird, bewegt sich das untergeordnete Objekt entsprechend. Dies muss zunächst verstanden werden.
Wie erstellt man ein Charakterbild? Wann verschiebt man die Karte? Wie verschiebt man die Karte? Vielleicht möchten Sie zuerst if(xxx){...} verwenden, um festzustellen, ob die Koordinaten des Charakters die Mitte des Bildschirms erreicht haben. Wenn nicht, verschieben Sie das Charakterobjekt. Es wäre problematisch, wenn Sie dies tun würden. Tatsächlich gibt es eine einfachere Methode:
Beim Scrollen/Nicht-Scrollen bewegen sich unsere Charaktere, aber wenn der Charakter die Mitte des Bildschirms erreicht und mit dem Scrollen beginnt, bewegt sich unsere Bühnenebene in die entgegengesetzte Richtung und Größe Bei gleicher Bewegung wird die Verschiebung des Charakters relativ zur Leinwand verschoben und er erscheint stationär, während die Karte der übergeordneten Klasse folgt und sich in die entgegengesetzte Richtung bewegt. Dies ähnelt dem Filmen eines Kostümfilms, bei dem zwei Personen gleichzeitig auf Pferden reiten und sich unterhalten. Wenn sich ein Mann und ein Pferd vorwärts bewegen und die Kamera ihnen mit der gleichen Geschwindigkeit folgt, entsteht das Bild, dass sich nicht die Charaktere bewegen, sondern dass sich die Szenerie hinter den Charakteren bewegt.
Als nächstes schauen wir uns den Implementierungscode an.
Implementierungscode
Das Folgende ist der Code mit detaillierten Kommentaren:
XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. LInit(30, 'mydemo', 700, 480, main);
  2. //Bewegungsrichtung, null bedeutet keine Bewegung
  3. var Richtung = null;
  4. // Vogel, Bühnenebene, Hintergrundobjekt
  5. var Bird, stageLayer, bg;
  6. //Die Länge jeder Bewegung
  7. var
  8. Schritt
  9. = 5; Funktion main () {
  10. // Ressourcenliste
  11. var
  12. loadList
  13. = [ 
  14. {name: 'bird', path: './bird.png'},
  15. {Name: 'bg', Pfad: './bg.jpg'}
  16. ];
  17. // Ressourcen laden
  18. LLoadManage.load(loadList, null, demoInit);
  19. }
  20. Funktion demoInit (Ergebnis) {
  21. //Stufenebene initialisieren
  22. stageLayer
  23. =
  24. neu
  25. LSprite(); addChild(stageLayer); //Hintergrund hinzufügen
  26. bg
  27. =
  28. new
  29. LBitmap(new LBitmapData(result['bg'])); bg.y = -100; stageLayer.addChild(bg);
  30. // Schließe dich den Vögeln an
  31. bird =
  32. new LBitmap(new LBitmapData(result['bird']));
  33. bird.x = 100;
  34. bird.y = 150; stageLayer.addChild(bird);
  35. //Mausdruckereignis hinzufügen stageLayer.addEventListener(LMouseEvent.MOUSE_DOWN, onDown); //Maussprungereignis hinzufügen
  36. stageLayer.addEventListener(LMouseEvent.MOUSE_UP, onUp);
  37. //Timeline-Ereignis hinzufügen
  38. stageLayer.addEventListener(LEvent.ENTER_FRAME, onFrame);
  39. }
  40. Funktion onDown (e) {
  41. /**Legen Sie die Bewegungsrichtung basierend auf der Klickposition fest*/ 
  42. if (e.offsetX
  43. >
  44. LGlobal.width / 2) {
  45. Richtung
  46. =
  47. 'rechts'
  48. ;
  49. } sonst {
  50. Richtung =
  51. 'links'
  52. ; } }    
  53. function onUp () {    
  54. // 設定方向為無方向,代表不移動    
  55. direction = null;    
  56. }    
  57. function onFrame () {    
  58. var _step, minX, maxX;    
  59. /** 移動小鳥 */    
  60. if (direction == 'right') {    
  61. _step = step;    
  62. } else if (direction == 'left') {    
  63. _step = -step;    
  64. } else {    
  65. return;    
  66. }    
  67. bird.x  = _step;    
  68. /** 控制小鳥移動範圍 */    
  69. minX = 0,    0
  70. ,    
  71. ,    ,    ,    
  72. ,    
  73. ,    ,    
  74. maxX = bg.getWidth()o.getWidth()). if (bird.x 
  75.  minX) {   
  76. bird.x = minX;    
  77. }else if (bird.x 
  78. >
  79.  maxX) {    
  80. bird.x = maxX;    maxX;    
  81. ;    
  82. ;    ;    ;    ;    
  83. ;     }     /** 移動舞台 */    
  84. stageLayer.x = LGlobal/** 控制舞台移動範圍 */    
  85. minX = LGlobal
  86. maxX = 0
  87. ;     if (stageLayer.x  minX
  88. )
  89. stageLayer.x = 
minX
;

}else if (stageLayer.x 

>
 maxX) {     stageLayer.x = maxX; }     }     運行結果: 大家可以到這裡查看線上示範。點選畫面左半邊控制小鳥向左移動,點選右半邊螢幕,控制小鳥向右移動。小鳥到達螢幕中央後,開始捲軸。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn