Monday, April 24, 2006

getURL กับ Flash 8

ปกติแล้วเวลาจะเรียก URL ไปเว็บใดๆจากใน Flash Movie ก็จะใช้คำสั่ง getURL
ทีนี้พอมาถึง Flash 8 ซึ่งเป็นรุ่นล่าสุด จะใช้ getURL เรียก URL ซึ่งอยู่คนละโดเมนไม่ได้ นั่นก็หมายความว่าถ้า Flash Movie รันจาก CDROM ก็จะไม่มีทางเรียก URL ที่เป็น http ได้เลย ถ้าดื้อใช้ getURL กับ Flash 8 มันจะบอกให้เราไปตั้งค่าสำหรับ player แต่ที่แปลกประหลาดที่สุดคือ การตั้งค่านี้ต้องทำผ่าน Internet และต้องมีความรู้เรื่องคอมพ์พอควรเลยจึงจะอ่านคำอธิบายมันเข้าใจ ซึ่งเป็นไปไม่ได้ที่จะให้ผู้ใช้ไปตั้งค่าเอง มีคนด่า Macromedia เรื่องนี้เพียบ แต่ตอนนี้ก็ยังไม่ได้รับการปรับปรุง มีแต่บอกว่าใช้กลับไปใช้ Flash รุ่นเก่า แต่ Project ที่ทำอยู่นี่ต้องการความสามารถพิเศษของ Flash 8 ดังนั้นจึงเป็นไปไม่ได้ที่จะ Downgrade ไปใช้รุ่นเก่า นอกจากนั้นก็มีคนแนะให้ทำโปรแกรม install เพื่อไปแก้ค่าต่างๆบนเครื่อง Client ก่อน เพื่อให้ใช้ getURL ได้ ดังที่เว็บ whenpenguinsattack.com ได้อธิบายเอาไว้ ซึ่งวิธีนี้ก็ไม่สามารถเอามาใช้ใน Project ได้เพราะต้องมีการไปเขียนไฟล์ในเครื่องของลูกค้า ซึ่งจะไม่ผ่านการตรวจรับ

ทางออกที่ใช้อยู่ตอนนี้คือใช้ ExternalInterface.call โดยมี actionscript คือ

import flash.external.*;
link1.onRelease = function(){
ExternalInterface.call("goURL1");
}

โดย link1 คือปุ่มที่จะใช้ในการเปิด URL
หลังจากนั้นก็ไปใส่ Javascript ไว้ใน HTML ที่มี object ของ Flash ซึ่งใส่ actionscript ข้างบนเอาไว้แล้ว
<script>
function goURL1() {
window.open(blah blah...);
}
</script>


ส่วนสำคัญที่สุดลืมไม่ได้เลยคือ ต้องเปลี่ยนค่า allowScriptAccess จาก sameDomain ไปเป็น always ในทุกแห่งที่มีการตั้งค่านี้ในไฟล์ HTML

วุ่นจริงๆเลยวุ้ย....

1 comment:

Anonymous said...

thak you