วิธีการแก้ปัญหาเวลาเพี้ยนที่เกิดจากเครื่องผู้ใช้ by

30
Nov
0

flex-time

โดยปกติแล้วเราใช้ new Date().getTime() เพื่อให้ได้เวลาปัจจุบันเพื่อไปเทียบในการแสดงผลเวลาต่างๆ ที่ใช้ในเกม แต่บางทีก็จะเกิดปัญหาขึ้นเนื่องงจากเครื่องผู้ใช้นั้นตั้งเวลาไม่ตรงกับเวลามาตรฐาน จึงทำให้การแสดงผลผิดเพี้ยนไปอย่างมาก เราจึงต้องทำการเอาเวลาจาก Server มาช่วยในการคำนวนเวลาปัจจุบันด้วย ดังนี้


public var timeDiff:Number = 0; //สร้างตัวแปรมาเก็บค่าความต่างจากเวลาปัจจุบัน
public function init():void{
timeDiff = current_server_time*1000-(new Date().getTime()); //ให้ current_server_time เป็นเวลาปัจจุบันที่ส่งมาจาก Server แล้วนำมาลบกับเวลาปัจจุบันของเครื่องผู้ใช้เพื่อเก็บเวลาที่ต่างกัน
}

ดังนั้นเราก็จะมีตัวแปรที่เก็บเวลาต่างกันของเวลาผู้ใช้และเวลาของ Server และนำไปใช้ ตัวอย่างเช่น


public var offerTimer:Timer = new Timer(1000); //ตัว Timer นับถอยหลังหมดเวลาของโปรโมชั่น
public function checkOfferTime(time:Number):void{ //ฟังก์ชั่นคิดเวลาที่เหลือของโปรโมชั่น
var nowDate:Date = new Date(); //เวลาปัจจุบัน
var endOffer:Date = new Date(time*1000); //เวลาที่จะหมด รับค่ามาเวลาถูกเรียก
var remainTime:Number = (endOffer.getTime()-(nowDate.getTime()+timeDiff))/1000; //เวลาที่เหลือของโปรโมชั่นก็จะเท่ากับ เวลาหมดลบด้วยเวลาปัจจุบันบวกด้วยความต่างของเวลาที่เราได้ทำการเก็บไว้ในตอนแรก
if(remainTime>0){ //ถ้าเวลายังเหลือ
offerTimer.repeatCount = remainTime; //ให้เวลาเหลือ (เป็นวินาที) เท่ากับจำนวนรอบนับถอยหลัง
offerTimer.reset(); //รีเซ็ท Timer
offerTimer.start(); //และสั่งเริ่มนับ
}
}

เท่านี้เวลาที่จะแสดงให้เห็นในเครื่องผู้ใช้ทุกเครื่องจะเท่ากันแล้วล่ะครัย

ExternalInterface.call(js) and IE by

30
Apr
1

เจอปัญหากับการสั่งให้ flash เรียกใช้งาน javascript โดยใช้คำสั่ง  ExternalInterface.call

เฉพาะบน IE ทุกตัว …

ช่างเป็นบั๊กที่ลึกลับมาก

เพียงแค่คุณไปตั้ง id ให้ใน tag object/embed ของ flash ให้ แค่นี้ก็ใช้ได้แล้ว

… ลึกลับดีมั้ยเอ่ย

ทำให้ As3 และ Javascript คุยกันได้ ฉบับ cross-domain by

31
Jan
0

จากเดือนที่แล้วมีบทความ ทำให้ As3 และ Javascript คุยกันได้ ไอเทคนิคนี้เราได้เอาไปใช้กับ project UMBO ครับ ตอนอยู่บน localhost ก็ทำงานได้ปกติดีครับ แต่เมื่อเอาขึ้นเซอร์เวอร์ไปแบบแบ่งเป็นหลายๆเซอร์เวอร์เนี่ย ทำให้เกิดปัญหาขึ้นมา เพราะ ตัว flash กับ website อยู่คนละเซอร์เวอร์กัน
เหตุการณ์อย่างนี้ ต่อให้ตั้ง attribute allowScriptAccess ของ flash object เป็น always ก็ไม่สามารถทำงานได้

วิธีที่จะทำให้ flash/flex นี้ ยอมรับ javascript แบบ cross-domain ได้ จะต้องไปเพิ่มโค๊ด

Security.allowDomain( “www.example.com” );

ไปก่อนที่จะรับ javascript แบบในบทความ `ทำให้ As3 และ Javascript คุยกันได้`

ทำให้ As3 และ Javascript คุยกันได้ by

28
Dec
1

เรียก Function AS3 ด้วย Javascript

http://blog.code-head.com/calling-a-javascript-function-from-actionscript-3-flash

ง่ายมากมายด้วย ExternalInterface

import flash.external.ExternalInterface;
...
ExternalInterface.call("your_javascript_function()");

จะเอาค่า Return ก็ได้


var x:int = ExternalInterface.call("get_x()");

ส่ง Parameter กะได้ :-D

var retval:int = ExternalInterface.call("some_js_function", "the-argument");

เรียก Function AS3 ด้วย Javascript

http://codingforums.com/showthread.php?t=152181

Javascript

			// Provides the proper address for the movie depending on browser
			function getFlashMovie(movieName) {
			  	var isIE = navigator.appName.indexOf("Microsoft") != -1;
			  	return (isIE) ? window[movieName] : document[movieName];
			}

			function playMovie() { 
				getFlashMovie("video").JStoASviaExternalInterface("start");
			}

Action Script

function getTextFromJavaScript(str:String):Void {
		if (str = "start") {
startVideo();
}
}
ExternalInterface.addCallback("JStoASviaExternalInterface", this, getTextFromJavaScript);

addFrameScript with parameters by

1
Dec
0

AS3 จะมีฟังค์ชัน addFrameScript เป็นฟังค์ชั่นของออบเจค MovieClip ใช้สำหรับให้รันฟังค์ชันที่กำหนดไว้เมื่อ movieClip รันมาถึงเฟรมที่เรากำหนดไว้

MovieClip.addFrameScript(frame_number:uint,function_to_call:Function)

frame_number – เฟรมที่เราต้องการให้ฟังค์ชั่นของเราเริ่มทำงาน มีการลำดับเฟรมแบบเริ่มต้นที่ 0

function_to_call – ฟังค์ชันที่เราต้องการให้เรียก

กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ