PDA

Просмотр полной версии : часы - время сервера


cerberus_nsv
09.07.2009, 20:32
Приветствую всех! т.к. я тут впервые!
Люди, помогите пожалуйста! я раньше флэшем не занимался, но вот пришлось осваивать... есть проблема, нашёл урок, сделал всё по нему... часы работают, но время берётся с компа... а задача состоит в том, что время должно браться с сервака, да ещё прибавлять 10 часов вперёд... это всё я сделал!!! но опять же, время берётся с компа...
порыскав во форумам я нашёл, что можно это осуществить с помощью php...
выкладываю код! не могу понять, почему не работают часы! буду признателен, если кто поможет разобраться!!!

loadVariables("../scriptTime.php");

time=Date();
var seconds = time.myhour;
var minutes = time.mymin;
var hours = time.mysec;

while(hours >12)
{
hours = hours - 12;
}

hours1 = hours + 10;

while(hours1 >12)
{
hours1 = hours1 - 12;
}

if (hours1<12)
{
ampm = "AM";
}
else
{
ampm = "PM";
}

if(hours1<10)
{
hours = "0" + hours;
}
if(minutes<10)
{
minutes = "0" + minutes;
}
if(seconds<10)
{
seconds = "0" + seconds;
}

clock_txt.text = hours1 + ":" + minutes + ":" + seconds +" "+ ampm;

<?php


echo "myhour=".date("H")."
&mymin=".date("i")."
&mysec=".date("s");

?>

Заранее спасибо за помощь!

iflamberg
09.07.2009, 20:49
ну и что вы тут делаете?
сначала забираете данные loadVariables("../scriptTime.php");
а потом эти данные нигде не используете, зато запрашиваете локальное время time=Date();

и работаете с ним

cerberus_nsv
09.07.2009, 22:03
понял, что не прав! :)
но хорошо, я убираю вызов функции локального времени и присваиваю переменным, переменные, которые у меня в пхп... ничё не пашет всё равно!

dmitriev
09.07.2009, 22:45
Я так понимаю, данные то не мгновенно загружаются, должно использовать событие onLoad и после него уже "включать" часы. Я признаться loadVariavles никогда не пользовался, но вот могу сказать вот что - пример из helpa

var submitListener:Object = new Object();
submitListener.click = function(evt:Object) {
var result_lv:LoadVars = new LoadVars();
result_lv.onLoad = function(success:Boolean) {
if (success) {
result_ta.text = result_lv.welcomeMessage;
} else {
result_ta.text = "Error connecting to server.";
}
};
var send_lv:LoadVars = new LoadVars();
send_lv.name = name_ti.text;
send_lv.sendAndLoad("http://www.flash-mx.com/mm/greeting.cfm", result_lv, "POST");
};
submit_button.addEventListener("click", submitListener);

тут как раз продемонстрировано использование события onLoad.
Вот по его наступлению "запускайте" свои часы.

dimarik
09.07.2009, 23:30
Задержку, "ping" не учитываете =) А ну, как лаганет Ваш сервак минут на дцать?

cerberus_nsv
10.07.2009, 00:55
Тенкс!!! вот я использовал функцию onLoad, вроде правильно! :)

var time:LoadVars = new LoadVars();

time.load("scriptTime.php", this);

time.onLoad=function() {
hours=this.myhour;
minutes=this.mymin;
seconds=this.mysec;
trace(hours);
trace(mymin);
trace(mysec);
}

trace не выводит мне никаких результатов! пишит на всё undefined !!!

dimarik
10.07.2009, 01:23
Вроде все пральна.

На всяк случай хендлер поставьте повыше вызова загрузки.

И тут еще, но не существенно:
load (LoadVars.load method)
public load(url: String) : Boolean
Но в Вашем коде есть второй аргумент
time.load("scriptTime.php", this);

cerberus_nsv
10.07.2009, 01:46
неа =( та же самая история... не определяет...

scarbo
10.07.2009, 01:57
как флешку запускаешь?Пропиши полный путь до PHP.

dimarik
10.07.2009, 02:50
Либо сервер криво отдает, либо флеш криво получает. onLoad срабатывает - политики безопасности работают.

cerberus_nsv
10.07.2009, 14:05
в общем выставлю ещё раз код полный который есть на данный момент...
var time:LoadVars = new LoadVars();

time.load("scriptTime.php", this);

time.onLoad=function()
{
var hours = this.myhour;
var minutes = this.mymin;
var seconds = this.mysec;
}

while(hours >12)
{
hours = hours - 12;
}

hours1 = hours + 10;

while(hours1 >12)
{
hours1 = hours1 - 12;
}

if (hours1<12)
{
ampm = "AM";
}
else
{
ampm = "PM";
}

if(hours1<10)
{
hours = "0" + hours;
}
if(minutes<10)
{
minutes = "0" + minutes;
}
if(seconds<10)
{
seconds = "0" + seconds;
}

clock_txt.text = hours1 + ":" + minutes + ":" + seconds +" "+ ampm;

<?php
echo "myhour=".date("H");
echo "mymin=".date("i");
echo "mysec=".date("s");
?>

скрипт находится в той же папке, что и файл флэша...
то что получается в итоге можно увидеть на http://uaps.ae/
есть вопрос, т.к. флэш постоянно запрашивает данные у скрипта, а скрипт, медленно работает на серваке... от этого могут быть проблемы, что не определяет...

dmitriev
10.07.2009, 14:51
Ну ёк-макарёк, вы onLoad то и не используете вовсе.

Попробуйте так:
var myLoadVars:LoadVars = new LoadVars();
myLoadVars.onLoad = function()
{
initClock(this.myhour, this.mymin, this.mysec);
}

function initClock(hours, minutes, seconds):Void {
while(hours > 12) {
hours = hours - 12;
}

var hours1 = hours + 10;

while(hours1 > 12) {
hours1 = hours1 - 12;
}

if(hours1 < 12) {
ampm = "AM";
} else {
ampm = "PM";
}

if(hours1<10) {
hours = "0" + hours;
}

if(minutes<10) {
minutes = "0" + minutes;
}

if(seconds<10) {
seconds = "0" + seconds;
}

clock_txt.text = hours1 + ":" + minutes + ":" + seconds +" "+ ampm;
}

myLoadVars.load("scriptTime.php", this);

cerberus_nsv
10.07.2009, 15:30
Спасибо!!!
я перезалил код... ничего... результат конечно есть! но показывает далеко не то что надо! ощущение такое, что показывает только пхп-ный скрипт через флэш... при чём, отображает его не правильно!

dmitriev
10.07.2009, 16:16
У вас какая то чушь написано с часами, вы то прибовляете 12, то отнимаете, то используете while, то if, я даже туда не смотрел, потому что вроде сложностей не должно возникнуть.