Цитата:
Сообщение от HotIceCream
(Сообщение 910403)
нет, не поэтому.
Что вы дальше делаете с nextsession ? Смысл в том, что вы скорее всего обрабатываете nextsession уже дальше еще до того, как вызовется функция onGetTime
|
дальше идет код таймера обратного отсчета, которому нужно значение nextsession - это время события до которого мы считаем. но этот код прописан в кадре таймлайн
Код AS3:
var now:Date = new Date();
// Conditional to snap to frame 3 if it is xmas or past xmas
if (now >= nextsession) {
gotoAndStop(3);
}
// Set the difference between the two date and times in milliseconds
var timeDiff:Number = nextsession.getTime() - now.getTime();
//Convert the timeDiff(which is in milliseconds) into regular seconds-minutes-hours-days
//The Math.floor is the closest rounded integer that is less than or equal to the decimal number
var milliseconds:Number = Math.floor(timeDiff / 001);
var seconds:Number = Math.floor(milliseconds / 1000);
var minutes:Number = Math.floor(seconds / 60);
var hours:Number = Math.floor(minutes / 60);
var days:Number = Math.floor(hours / 24);
// Set the remainder of the division vars above
hours %= 24;
minutes %= 60;
seconds %= 60;
milliseconds %= 1000;
// String all vars together for display
var timeRemaining:String = "Days= " + days + " Hours= " + hours + " Minutes= " + minutes + " Seconds= " + seconds +" milliseconds= " + milliseconds;
var ms:String ="" + milliseconds;
var s:String ="" + seconds;
var m:String ="" + minutes;
var h:String ="" + hours;
var d:String ="" + days;
// Display everything in their dynamic text fileds
msString.text = ms;
sString.text = s;
mString.text = m;
hString.text = h;
dString.text = d;
timeString.text = timeRemaining;
now_txt.text = "now: " + now;
xmas_txt.text = "Xmas = " + nextsession;
а сама функция в классе Timer:
Код AS3:
package {
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.MovieClip;
import Amf; //--подключаем наш класс для взаимодействия
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
public class Timer extends MovieClip {
public var amf:Amf; //--обьявим переменную класса Amf для взаимодействия
public function Timer() {
amf= new Amf();
amf.toamf("timer.getevent.getevent",onGetEvent);
//-- timer.getevent.getevent - сначало имя папки в которой скрипт php, дальше имя php скрипта, дальше имя вызываемой функции
amf.toamf("timer.getevent.gettime",onGetTime);
//-- вторым параметром - функция в которую вернется ответ сервера
amf.toamf("timer.getevent.getversioninfo",onGetVersion);
}
public function onGetEvent(a:Object):void {
//var uint=0;
//var dx:uint=0;
for each (var val:Array in a.serverInfo.initialData) { //--в переменную val будет загонятся очередной значение из массива a, принцип: val=a[0]; val=a[1]; и тд
var tf:TextField=newtext;
var gp:TextField=gpname;
var en:TextField=eventname;
//tf.autoSize=TextFieldAutoSize.LEFT;
tf.text='дата '+ val[0]+' '; //--запишем дату и пробел
tf.text+=val[1]+' '; //--допишем заголовок и новую строку
tf.text+=val[2]+'\n';
tf.text+=val[3]+' ';
tf.text+=val[4];
gp.text+=val[1];
en.text+=val[2];
// загрузка изображения
var imageLoader:Loader = new Loader();
var theURL:String = "images/gp/"+ val[5] +".jpg";
var imageRequest = new URLRequest(theURL);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
imageLoader.load(imageRequest);
function onComplete(evt:Event) {
addChildAt(imageLoader.content,0);
}
addChild(tf);
addChild(gp);
}
}
var next1:Date=new Date(2010, 04, 28, 7, 0, 0, 0);
public function onGetTime(t:String):void {
next1 = new Date(t);
var ed:TextField=evendate;
ed.text+=new Date(t);
trace('', t);
trace('', next1);
return t;
}
//var nextsession = next1;
var nextsession:Date = new Date(Date.UTC(2010, 04, 28, 7, 0, 0, 0));
//--пример получения простого значения из php
function onGetVersion(s:String):void { //--из php нам отдается простая строка, значит и в параметрах функции мы укажем строку
trace('Версия php сервиса:', s);
}
}
}
вот так, как сейчас работает, потому, что я прямо вписал цифрами дату события var nextsession:Date = new Date(Date.UTC(2010, 04, 28, 7, 0, 0, 0));, но проблема в том, что дата не всегда будет одинакова, поэтому тут должна быть переменная, которая получает данные внутри функции onGetTime.
Добавлено через 5 минут
Цитата:
Сообщение от КорДум
(Сообщение 910406)
Код AS3:
переменная = функция(передача параметров);
функция (передача параметров):ТипВозвращаемогоЗначения {
что-то делает;
return локальная переменнаяЭтойФункции;
}
Но это, наверно, не для вашего случая.
|
да тяжелый у меня случай, все что надо от скрипта получил, и текстовые поля и изображение, а вот переменную для даты события никак.
Добавлено через 6 минут
Из функции никак нельзя объявить переменную, чтоб она действовала во всем клипе?
|