แปลงเกม Flash เป็น HTML5

Sep 17, 2025
วิธีการ
Convert Flash games to HTML5

แฟลชถูกทิ้งร้างอย่างช้าๆโดย Adobe ในความโปรดปรานของ HTML5 และ JavaScript; การสิ้นสุดของชีวิตอย่างเป็นทางการเป็นอย่างเป็นทางการสำหรับปี 2020 และนั่นคือที่ที่บทความนี้จะมีประโยชน์

  • สร้างเว็บไซต์แฟลช 2004 ใหม่สำหรับปี 2018

เคล็ดลับที่อธิบายไว้ด้านล่างนี้เพื่อช่วยเหลือนักพัฒนาเกม HTML5 หลีกเลี่ยงข้อผิดพลาดทั่วไปเมื่อแปลงเกมแฟลชไปยังจาวาสคริปต์รวมถึงการทำให้กระบวนการพัฒนาทั้งหมดเป็นไปอย่างราบรื่นที่สุดเท่าที่จะทำได้ สิ่งที่คุณต้องมีคือความรู้พื้นฐานเกี่ยวกับ JavaScript WebGL และเฟรมเวิร์ก Phaser

การเปลี่ยนการออกแบบเกมของคุณจาก SWF ไปยัง JavaScript สามารถให้ผลผลิตได้ดีขึ้น ประสบการณ์การใช้งาน ซึ่งจะทำให้มันดูทันสมัย แต่จะทำอย่างไร? คุณต้องการตัวแปลงเกม JavaScript เฉพาะเพื่อกำจัดเทคโนโลยีที่ล้าสมัยนี้หรือไม่? การแปลงแฟลชเป็น HTML5 เป็นชิ้นส่วนของเค้ก - นี่คือสิ่งที่นักพัฒนาเกมจาวาสคริปต์ที่มีประสบการณ์ต้องพูดเกี่ยวกับเรื่องนี้

ชอบที่จะทำให้กระบวนการออกแบบของคุณง่ายขึ้น? สร้างเว็บไซต์ และขวา เว็บโฮสติ้ง ผู้ให้บริการสามารถรักษาได้อย่างนั้น

01. ปรับปรุงประสบการณ์เกม HTML5

การแปลงเกมไปยังแพลตฟอร์มอื่นเป็นโอกาสที่ยอดเยี่ยมในการปรับปรุงแก้ไขปัญหาและเพิ่มผู้ชม ด้านล่างมีบางสิ่งที่สามารถทำได้ง่ายและคุ้มค่าที่จะพิจารณา:

  • รองรับอุปกรณ์มือถือ
    การแปลงจากแฟลชเป็นจาวาสคริปต์ช่วยให้ผู้ชมที่กว้างขึ้น - ผู้ใช้อุปกรณ์พกพาที่รองรับการควบคุมหน้าจอสัมผัสมักจะต้องมีการใช้งานในเกม โชคดีที่อุปกรณ์ Android และ iOS ตอนนี้รองรับ WebGL ดังนั้นการเรนเดอร์ FPS 30 หรือ 60 ครั้งจึงสามารถทำได้อย่างง่ายดาย ในหลายกรณี 60 FPS จะไม่ก่อให้เกิดปัญหาใด ๆ ซึ่งจะปรับปรุงเฉพาะเวลาเนื่องจากอุปกรณ์มือถือกลายเป็นนักแสดงมากขึ้นเรื่อย ๆ
  • ปรับปรุงประสิทธิภาพ
    เมื่อพูดถึงการเปรียบเทียบ ActionScript และ JavaScript หลังนั้นเร็วกว่า นอกเหนือจากนั้นการแปลงเกมเป็นโอกาสที่ดีในการทบทวนอัลกอริทึมที่ใช้ในโค้ดเกม ด้วยการพัฒนาเกม JavaScript คุณสามารถเพิ่มประสิทธิภาพหรือถอดโค้ดที่ไม่ได้ใช้แถบที่เหลือโดยนักพัฒนาดั้งเดิม
  • แก้ไขข้อบกพร่องและทำการปรับปรุงการเล่นเกม
    การมีนักพัฒนาใหม่ที่กำลังมองหารหัสที่มาของเกมสามารถช่วยแก้ไขข้อบกพร่องที่รู้จักหรือค้นพบสิ่งใหม่และหายากมาก สิ่งนี้จะทำให้การเล่นเกมน่ารำคาญน้อยลงสำหรับผู้เล่นซึ่งจะทำให้พวกเขาใช้เวลามากขึ้นในเว็บไซต์ของคุณและสนับสนุนให้พวกเขาลองเกมอื่น ๆ ของคุณ
  • การเพิ่มการวิเคราะห์เว็บ
    นอกเหนือจากการติดตามปริมาณการใช้งานการวิเคราะห์เว็บยังสามารถใช้เพื่อรวบรวมความรู้เกี่ยวกับวิธีที่ผู้เล่นประพฤติตนในเกมและพวกเขาติดอยู่ในระหว่างการเล่นเกม
  • การเพิ่มการแปล
    สิ่งนี้จะเพิ่มผู้ชมและเป็นสิ่งสำคัญสำหรับเด็ก ๆ จากประเทศอื่น ๆ ที่เล่นเกมของคุณ หรือบางทีเกมของคุณไม่ได้เป็นภาษาอังกฤษและคุณต้องการสนับสนุนภาษานั้นหรือไม่?

02. บรรลุ 60 fps

เมื่อพูดถึงการพัฒนาเกม JavaScript อาจเป็นการล่อลวงให้ใช้ประโยชน์จาก HTML และ CSS สำหรับปุ่มในเกมวิดเจ็ตและองค์ประกอบ GUI อื่น ๆ คำแนะนำของเราคือระวังที่นี่ มันเป็นการโต้ตอบ แต่จริง ๆ แล้วการใช้ประโยชน์จากองค์ประกอบของ DOM นั้นน้อยกว่าเกมที่ซับซ้อนและสิ่งนี้จะมีความสำคัญมากขึ้นบนมือถือ หากคุณต้องการให้ได้ค่าคงที่ 60 FPS ในทุกแพลตฟอร์มจากนั้นจะต้องลาออกจาก HTML และ CSS

องค์ประกอบ GUI แบบไม่โต้ตอบเช่นบาร์สุขภาพแท่งกระสุนหรือเคาน์เตอร์คะแนนสามารถนำมาใช้ใน Phaser ได้อย่างง่ายดายโดยใช้ภาพปกติ (คลาส 'Phaser.Image') ใช้ประโยชน์จากคุณสมบัติ '.crop' สำหรับการตัดแต่งและ 'Phaser คลาส 'คลาสสำหรับฉลากข้อความที่เรียบง่าย

องค์ประกอบแบบอินเทอร์แอคทีฟเช่นปุ่มและกล่องกาเครื่องหมายสามารถดำเนินการได้โดยใช้คลาส 'Phaser.Button' ในตัว องค์ประกอบอื่น ๆ ที่ซับซ้อนมากขึ้นสามารถประกอบด้วยประเภทง่าย ๆ เช่นกลุ่มรูปภาพปุ่มและฉลากข้อความ

03. กำลังโหลดแบบอักษรที่กำหนดเอง

หากคุณต้องการแสดงข้อความด้วยแบบอักษรเวกเตอร์ที่กำหนดเอง (เช่น TTF หรือ OTF) คุณต้องตรวจสอบให้แน่ใจว่าฟอนต์นั้นถูกโหลดโดยเบราว์เซอร์แล้วก่อนแสดงข้อความใด ๆ Phaser V2.6 ไม่ได้ให้วิธีแก้ปัญหาสำหรับจุดประสงค์นี้ แต่สามารถใช้ห้องสมุดอื่นได้ - โหลดแบบอักษรเว็บ .

สมมติว่าคุณมีไฟล์ฟอนต์และรวมถึงตัวโหลดแบบอักษรเว็บในหน้าของคุณจากนั้นด้านล่างเป็นตัวอย่างง่ายๆของวิธีการโหลดแบบอักษร สร้างไฟล์ CSS อย่างง่ายที่จะถูกโหลดโดยโหลดแบบอักษรเว็บ (คุณไม่จำเป็นต้องใส่ไว้ใน HTML ของคุณ):

 @ font-face {
  // ชื่อนี้คุณจะใช้ใน JS
  ตัวอักษรตระกูล: 'Gunplay';
  // URL ไปยังไฟล์ฟอนต์สามารถเป็นญาติหรือสัมบูรณ์
  SRC: URL (.. / ฟอนต์ / gunplay.ttf ') รูปแบบ (' trueType ');
  อักษร - น้ำหนัก: 400;
} 

ตอนนี้กำหนดตัวแปรทั่วโลกชื่อ Webfontconfig สิ่งที่ง่ายเหมือนเดิมจะพอเพียง:

 var webfontconfig = {
  'คลาส': เท็จ
  'หมดเวลา': 0,
  'ใช้งาน': ฟังก์ชั่น () {
  // ตัวอักษรโหลดเรียบร้อยแล้ว ...
  },
  'กำหนดเอง': {
  'ครอบครัว': ['Gunplay']
  // URL ไปยัง CSS ที่กล่าวถึงก่อนหน้านี้
  'URL': ['สไตล์ / fonts.css']
  }
}; 

อย่าลืมใส่รหัสของคุณในการเรียกกลับ 'แอ็คทีฟ' ที่แสดงด้านบน และนั่นคือมัน!

04. บันทึกเกม

ตอนนี้เราอยู่ในช่วงกลางของแฟลชของเราในการแปลง JavaScript - ถึงเวลาที่จะดูแล Shaders แล้ว หากต้องการเก็บข้อมูลท้องถิ่นใน ActionScript อย่างต่อเนื่องคุณจะใช้คลาส 'SharedObject' ใน JavaScript การเปลี่ยนที่เรียบง่ายคือ LocalStorage API ซึ่งช่วยให้การจัดเก็บสตริงสำหรับการเรียกคืนในภายหลังการโหลดหน้าเว็บที่รอดชีวิต

ข้อมูลการบันทึกนั้นง่ายมาก:

 Var Progress = 15;
localstorage.setItem ('myGame.Progress' ความคืบหน้า); 

โปรดทราบว่าในตัวอย่างข้างต้นตัวแปร 'ความคืบหน้า' ซึ่งเป็นตัวเลขจะถูกแปลงเป็นสตริง

การโหลดนั้นง่ายเกินไป แต่จำไว้ว่าค่าที่ดึงมาจะเป็นสตริงหรือเป็นโมฆะหากไม่มีอยู่

 ความคืบหน้า var = parseint (localstorage.getitem ('myGame.Progress')) || 0; 

ที่นี่เรามั่นใจว่าค่าส่งคืนเป็นตัวเลข หากไม่มีอยู่แล้ว 0 จะถูกกำหนดให้กับตัวแปร 'ความคืบหน้า'

นอกจากนี้คุณยังสามารถเก็บและดึงโครงสร้างที่ซับซ้อนมากขึ้นเช่น JSON:

 Var Stats = {'เป้าหมาย': 13, 'ชนะ': 7, 'การสูญเสีย': 3, 'วาด': 1
};
localstorage.setItem ('myGame.stats', json.stringify (stats));
...
var stats = json.psse (localstorage.getitem ('myGame.stats')) || {}; 

มีบางกรณีเมื่อวัตถุ 'localStorage' ไม่สามารถใช้ได้ ตัวอย่างเช่นเมื่อใช้ไฟล์: // โปรโตคอลหรือเมื่อโหลดหน้าในหน้าต่างส่วนตัว คุณสามารถใช้คำสั่ง 'ลองและจับ' เพื่อให้แน่ใจว่ารหัสของคุณจะทำงานต่อไปและใช้ค่าเริ่มต้นซึ่งแสดงในตัวอย่างด้านล่าง:

 ลอง {
    Var Progress = localstorage.getitem ('myGame.Progress');
} catch (ข้อยกเว้น) {
  // localstorage ไม่พร้อมใช้งานให้ใช้ค่าเริ่มต้น
} 

อีกสิ่งหนึ่งที่ต้องจำก็คือข้อมูลที่เก็บไว้จะถูกบันทึกต่อโดเมนไม่ใช่ต่อ URL ดังนั้นหากมีความเสี่ยงที่หลาย ๆ เกมนั้นโฮสต์บนโดเมนเดียวจากนั้นจะดีกว่าที่จะใช้คำนำหน้า (เนมสเปซ) เมื่อบันทึก ในตัวอย่างข้างต้น 'MyGame' เป็นคำนำหน้าและคุณมักจะต้องการแทนที่ด้วยชื่อของเกม

หากเกมของคุณถูกฝังอยู่ใน iFrame แล้ว LocalStorage จะไม่คงอยู่บน iOS ในกรณีนี้คุณจะต้องเก็บข้อมูลในผู้ปกครอง iframe แทน

05. Fragment SHADER เริ่มต้น

Convert Flash games to HTML5: Custom default shader

สามารถใช้ Shader ที่กำหนดเองได้เพื่อแทนที่วิธีการย้อมสีใน Phaser และ Pixijs ถังแฟลชสีขาวเมื่อกด

เมื่อ Phaser และ Pixijs แสดงความชื้นของคุณพวกเขาใช้ Shader ภายในที่เรียบง่าย มันไม่มีคุณสมบัติมากมายเพราะเหมาะสำหรับความเร็ว อย่างไรก็ตามคุณสามารถแทนที่ Shader เพื่อวัตถุประสงค์ของคุณ ตัวอย่างเช่นคุณสามารถใช้ประโยชน์จากการตรวจสอบการถอนเงินหรือสนับสนุนคุณสมบัติเพิ่มเติมสำหรับการเรนเดอร์ ด้านล่างเป็นตัวอย่างของวิธีการจัดหา Fragment SHATMENT ของคุณเองเป็น Phaser V2

 ฟังก์ชั่นโหลดล่วงหน้า () {
  this.load.shader ('filename.frag', 'shaders / filename.frag');
}
ฟังก์ชั่นสร้าง () {
  var renderer = this.renderer;
  var batch = renderer.spriteBatch;
  batch.defaultshader =
  ใหม่ pixi.abstractfilter (this.cache.getshader ('filename.frag'));
  batch.setcontext (renderer.gl);
} 

06. เปลี่ยนวิธีการย้อมสี

Shader เริ่มต้นที่กำหนดเองสามารถใช้เพื่อแทนที่วิธีการย้อมสีเริ่มต้นใน Phaser และ Pixijs ย้อมสีใน Phaser และ Pixijs ทำงานโดยการคูณพิกเซลพื้นผิวด้วยสีที่กำหนด การคูณสีเข้มขึ้นเสมอซึ่งเห็นได้ชัดว่าไม่ใช่ปัญหา; มันแตกต่างจากการย้อมสีแฟลช สำหรับหนึ่งในเกมของเราที่เราต้องการใช้ย้อมสีคล้ายกับ Flash และตัดสินใจว่าสามารถใช้ Shader ที่กำหนดเองได้ ด้านล่างเป็นตัวอย่างของ shader ชิ้นส่วนดังกล่าว:

// ตัวแปรโทนสีที่เฉพาะเจาะจงคล้ายกับการย้อมสีแฟลชที่เพิ่ม
// กับสีและไม่คูณ ลบสี
// จะต้องจัดหาให้กับ Shader นี้เพื่อทำงานอย่างถูกต้อง I.e. ตั้งค่า
// Sprite.tint to 0 เพื่อเปลี่ยนทั้ง Sprite เป็นสีขาว
ความแม่นยำ lowp ลอย;
varying vec2 vtexturecoord;
varying vec4 vcolor;
เครื่องแบบ sampler2d usampler;
โมฆะหลัก (เป็นโมฆะ) {
  VEC4 F = Texture2D (usampler, vtexturecoord);
  float a = clamp (vcolor.a, 0.00001, 1.0);
  gl_fragcolor.rgb = f.rgb * vcolor.a + clamp (1.0 - vcolor.rgb / a, 0.0, 1.0) * vcolor.a * f.a;
  gl_fragcolor.a = f.a * vcolor.a;
} 

พิกเซล Shader Lightens นี้โดยการเพิ่มสีฐานให้กับสีอ่อน สำหรับการทำงานนี้คุณต้องจัดหาข้อความเชิงลบของสีที่คุณต้องการ ดังนั้นเพื่อให้ได้สีขาวคุณต้องตั้งค่า:

 Sprite.tint = 0x000000; // สีนี้สไปรต์เป็นสีขาว
Sprite.tint = 0x00ffff; // นี้ให้สีแดง 

07. ตรวจสอบการถอนเงินเกินบัญชี

Convert Flash games to HTML5: Overdraw shader

รูปภาพด้านซ้ายแสดงให้เห็นว่าผู้เล่นเห็นเกมในขณะที่ด้านขวาแสดงผลของการใช้ shader ที่ตรงกันไปยังฉากเดียวกัน

การแทนที่ Shader เริ่มต้นสามารถใช้ประโยชน์ได้เพื่อช่วยในการดีบัก ด้านล่างเราได้อธิบายว่าสามารถตรวจจับการฟิกซ์เกินดัชนีได้อย่างไร

การถอนเงินเกิดขึ้นเมื่อพิกเซลจำนวนมากหรือทั้งหมดบนหน้าจอแสดงผลหลายครั้ง ตัวอย่างเช่นวัตถุจำนวนมากที่ใช้สถานที่เดียวกันและถูกแสดงผลอีกครั้ง จำนวนพิกเซลของ GPU สามารถแสดงต่อวินาทีต่อวินาทีได้รับการอธิบายว่าเป็นอัตราการเติม GPU เดสก์ท็อปที่ทันสมัยมีอัตราการเติมมากเกินไปสำหรับวัตถุประสงค์ 2D ปกติ แต่มือถือช้าลงมาก

มีวิธีการง่ายๆในการค้นหาจำนวนเท่าใดแต่ละพิกเซลบนหน้าจอเขียนโดยแทนที่ Shader Fragment Global เริ่มต้นใน Pixijs และ Phaser ด้วยอันนี้:

 เป็นโมฆะหลัก (เป็นโมฆะ) {
  GL_FRAGCOLOR.RGB + = 1.0 / 7.0;
} 

พิกเซล Shader Lightens นี้ที่กำลังประมวลผล หมายเลข 7.0 หมายถึงจำนวนการเขียนที่จำเป็นในการเปลี่ยนพิกเซลสีขาว คุณสามารถปรับหมายเลขนี้ตามที่คุณต้องการ กล่าวอีกนัยหนึ่งพิกเซลที่เบาลงบนหน้าจอถูกเขียนหลายครั้งและพิกเซลสีขาวเขียนอย่างน้อยเจ็ดครั้ง

SHADER นี้ยังช่วยในการค้นหาทั้งวัตถุ 'มองไม่เห็น' ซึ่งด้วยเหตุผลบางอย่างยังคงมีการแสดงผลและสไปรต์ที่มีพื้นที่โปร่งใสมากเกินไปที่ต้องถอดออก (GPU ยังคงต้องดำเนินการพิกเซลโปร่งใสในพื้นผิวของคุณ)

08. ทำไมเครื่องยนต์ฟิสิกส์เป็นเพื่อนของคุณ

Convert Flash games to HTML5: Phaser physics debug

ส่วนด้านซ้ายของภาพเป็นฉากจากเกมในขณะที่ด้านขวาแสดงให้เห็นถึงฉากเดียวกันกับ Phaser ฟิสิกส์ Debug Outlay ที่แสดงอยู่ด้านบน

เครื่องยนต์ฟิสิกส์เป็นมิดเดิลแวร์ที่รับผิดชอบในการจำลองร่างกายฟิสิกส์ (โดยปกติจะมีพลวัตของร่างกายที่เข้มงวด) และการชนของพวกเขา เครื่องยนต์ฟิสิกส์จำลองพื้นที่ 2D หรือ 3D แต่ไม่ใช่ทั้งคู่ เครื่องยนต์ฟิสิกส์ทั่วไปจะให้:

  • การเคลื่อนไหวของวัตถุโดยการตั้งค่าความเร็วการเร่งความเร็วข้อต่อและมอเตอร์
  • การตรวจจับการชนระหว่างรูปร่างที่หลากหลาย
  • การคำนวณการตอบสนองการชนกันของ I.E. วิธีที่วัตถุสองชิ้นควรตอบสนองเมื่อพวกเขาชนกัน

มีปลั๊กอิน Phaser ที่ทำงานได้ดีสำหรับจุดประสงค์นี้ Box2D ยังใช้ในเครื่องยนต์เกม Unity และ GameMaker Studio 2

ในขณะที่เครื่องยนต์ฟิสิกส์จะเพิ่มความเร็วในการพัฒนาของคุณมีราคาที่คุณต้องจ่าย: ลดประสิทธิภาพรันไทม์ การตรวจจับการชนและการคำนวณการคำนวณเป็นงานที่ใช้งาน CPU คุณอาจถูก จำกัด เฉพาะวัตถุแบบไดนามิกหลายโหลในฉากบนโทรศัพท์มือถือหรือใบหน้าประสิทธิภาพที่เสื่อมโทรมรวมถึงอัตราเฟรมลดลงต่ำกว่า 60 FPS

09. ส่งออกเสียง

หากคุณมีเอฟเฟกต์เสียงเกมแฟลชภายในไฟล์. FLA จากนั้นส่งออกจาก GUI เป็นไปไม่ได้ (อย่างน้อยไม่ได้อยู่ใน Adobe Animate CC 2017) เนื่องจากการขาดตัวเลือกเมนูที่ให้บริการนี้ แต่มีอีกวิธีหนึ่ง - สคริปต์เฉพาะที่ทำเช่นนั้น:

 ฟังก์ชั่น normalizefilename (ชื่อ) {
  // แปลงชื่อ Camelcase เป็นชื่อ Snake_case
  return name.replace (/ (a-z]) / g, '_ $ 1') แทนที่ (/ ^ _ /, '') .Tolowercase ();
}
ฟังก์ชั่น DisplayPath (เส้นทาง) {
  // ทำให้เส้นทางไฟล์อ่านได้มากขึ้น
  ส่งคืน Unescape (เส้นทาง) .replace ('ไฟล์: ///', '') .replace ('|', ':');
}
fl.outputpanel.clear ();
ถ้า (fl.getdocumentdom () library.getselectedItems () ความยาว & gt; 0)
  // รับเฉพาะรายการที่เลือกเท่านั้น
  var library = fl.getdocumentdom () library.getSelectedItems ();
อื่น
  // รับรายการทั้งหมด
  var library = fl.getdocumentdom () library.iteems;
// ขอให้ผู้ใช้สำหรับไดเร็กทอรีปลายทางการส่งออก
var root = fl.browereforfolderurl (เลือกโฟลเดอร์ ');
ข้อผิดพลาด var = 0;
สำหรับ (var i = 0; i & lt; library.length; i ++) {
  var item = library [i];
  ถ้า (item.itemtype! == 'เสียง')
  ดำเนินการต่อ;
  var path = root + '/';
  ถ้า (item.originalcompressiontype === 'ดิบ')
  พา ธ + = normalizefilename (item.name.split ('.') 
) + '.wav'; อื่น path + = normalizefilename (item.name); ความสำเร็จของ var = item.exporttofile (เส้นทาง); ถ้า (! สำเร็จ) ข้อผิดพลาด + = 1; fl.trace (DisplayPath (เส้นทาง) + ':' + (ความสำเร็จ? 'ตกลง': 'ข้อผิดพลาด')); } ข้อผิดพลาด fl.trace (ข้อผิดพลาด + '');

วิธีการใช้สคริปต์เพื่อส่งออกไฟล์เสียง:

  1. บันทึกรหัสด้านบนเป็นไฟล์. jsfl บนคอมพิวเตอร์ของคุณ
  2. เปิดไฟล์. FLA ด้วย Adobe Animate
  3. เลือกคำสั่ง & gt; เรียกใช้คำสั่งจากเมนูด้านบนและเลือกสคริปต์ในบทสนทนาที่เปิดขึ้น
  4. ตอนนี้ไฟล์บทสนทนาอื่นปรากฏขึ้นเพื่อเลือกไดเรกทอรีปลายทางการส่งออก

มันจบแล้ว! ตอนนี้คุณควรมีไฟล์ WAV ในไดเรกทอรีที่ระบุ สิ่งที่เหลือให้ทำคือแปลงพวกเขาเป็นเช่น, mp3, ogg หรือ aac (หากคุณมีไฟล์เกมเพื่อให้ปลอดภัยอัพเกรดเป็นที่เหมาะสม การจัดเก็บเมฆ .)

10. วิธีใช้ mp3s

รูปแบบ MP3 เก่าที่ดีกลับมาแล้วเนื่องจากสิทธิบัตรบางรายหมดอายุและตอนนี้ทุกเบราว์เซอร์สามารถถอดรหัสและเล่น MP3 สิ่งนี้ทำให้การพัฒนาง่ายขึ้นเล็กน้อยเนื่องจากในที่สุดก็ไม่จำเป็นต้องเตรียมสองรูปแบบเสียงแยกต่างหาก ก่อนหน้านี้ที่คุณต้องการเช่นไฟล์ OGG และ AAC ขณะนี้ MP3 จะพอเพียง

อย่างไรก็ตามมีสองสิ่งสำคัญที่คุณต้องจดจำเกี่ยวกับ MP3:

  • MP3 จำเป็นต้องถอดรหัสหลังจากโหลดซึ่งอาจใช้เวลานานโดยเฉพาะบนอุปกรณ์มือถือ หากคุณเห็นการหยุดชั่วคราวหลังจากที่สินทรัพย์ทั้งหมดของคุณโหลดแล้วอาจหมายความว่า MP3 ที่ถูกถอดรหัส
  • การเล่น MP3 ที่เปิดโล่งอย่างงดงามเป็นปัญหาเล็ก ๆ น้อย ๆ วิธีแก้ปัญหาคือการใช้ mp3Loop อ่านเพิ่มเติมในบทความนี้ โพสต์โดย phase compu

บทความนี้ได้รับการตีพิมพ์ครั้งแรกในฉบับที่ 277 ของนักออกแบบเว็บไซต์ Web Design Creative Web Design ซื้อปัญหา 277 ที่นี่ หรือ สมัครสมาชิกกับนักออกแบบเว็บไซต์ที่นี่ .

บทความที่เกี่ยวข้อง:

  • 5 เกมสบาย ๆ สำหรับนักออกแบบ
  • สร้างเกมฟิสิกส์ WebGL ของคุณเอง
  • เข้าใจท่อนำเข้าสินทรัพย์สามัคคี

วิธีการ - บทความยอดนิยม

วิธีการวาดหมาป่า

วิธีการ Sep 17, 2025

หากคุณเชี่ยวชาญ วิธีการวาดสุนัข คุณจะได้รับการอภ..


วิธีการวาดตัวเลขที่สมจริงยิ่งขึ้น

วิธีการ Sep 17, 2025

ในการสอนการวาดรูปนี้เราจะมุ่งเน้นไปที่ลำตัว..


นักออกแบบ Affinity: วิธีใช้กริด

วิธีการ Sep 17, 2025

Affinity Designer เป็นชุดเครื่องมือแก้ไขเวกเตอร์สำหรับ Ma..


Sculpt กายวิภาคสมจริงใน ZBrush

วิธีการ Sep 17, 2025

หน้า 1 จาก 2: หน้า 1 หน้า 1 หน้า 2 ..


สร้างแอพที่ทำงานแบบออฟไลน์

วิธีการ Sep 17, 2025

เป็นเวลานานฟังก์ชั่นออฟไลน์การซิงโครไนซ์พื้..


สร้างส่วนประกอบที่ตอบสนองได้ที่ปรับขนาดได้

วิธีการ Sep 17, 2025

เมื่อใดก็ตามที่เราพูดถึงการสร้างเว็บไซต์ที่..


สร้างวอลล์เปเปอร์โพลีต่ำใน C4D

วิธีการ Sep 17, 2025

หน้า 1 จาก 2: สร้างวอลล์เปเปอร์โพลีต่ำใ..


วิธีใช้คุณสมบัติ 'Match Font' ของ Photoshop

วิธีการ Sep 17, 2025

นักออกแบบและโฆษณาจากทุกฟิลด์เป็นเหมือน Magpies ใน..


หมวดหมู่