Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   часы не работают! в чем дело? (http://www.flasher.ru/forum/showthread.php?t=115481)

DeeMan757 31.08.2008 23:10

часы не работают! в чем дело?
 
помогите пожалуйста с часами! они должны показывать время сервера, которое им дает php файл xxx.php но они не работают... всегда показывают 12часов. минуты и секунды правильно. в чем может быть ошибка? вот код:

Код:

_root.attachMovie("secondarrow","sec_mc",300,{_x:27.5, _y:27.5});
_root.attachMovie("minutearrow","min_mc",200,{_x:27.5, _y:27.5});
_root.attachMovie("primaryarrow","prim_mc",100,{_x:27.5, _y:27.5});


_root.clock_hours = 0;
_root.left_hours = 0;
ready=false;

var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success:Boolean)
{
    trace(my_xml)
        if (success)
    {
          ready=true;
          _root.clock_hours = Math.floor(my_xml.childNodes[0].attributes.h);
            lmin = now.getMinutes();
    }
}
my_xml.load("http://xxx.ru/xxx/xxx.php?anticache="+Math.random());



_root.onEnterFrame = function()
{
    if (ready)
    {
          if (lmin > now.getMinutes())
          _root.left_hours++;
         
          var now:Date = new Date();
          sec = now.getSeconds();
          min = now.getMinutes();
          prim = _root.clock_hours + _root.left_hours;
          trace(_root.left_hours)
          lmin = min;
         

          _root.sec_mc._rotation = sec/60*360;
          //var mr:Number = min*6 + sec/10;
          min_mc._rotation = min/60*360;
          prim_mc._rotation = prim/12*360;
    }
}

и php файл
Код:

<?
$smeshenie_servera = 2;

$hour = floor(date('H')) - $smeshenie_servera;

if ($hour<0)
$hour += 24;

if ($hour>=24)
$hour -= 24;

echo '&lt;dat h=\"'.$hour.'\"&gt;';
?>


Haiat 31.08.2008 23:30

код оформи тегами )

scarbo 31.08.2008 23:34

Вот Вам код работающих цифровых часов
Код:

var myDate:Date = new Date();
var day:Array = new Array("воскресенье","понедельник","вторник","среда","четверг","пятница","суббота");
var mo:Array = new Array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
var hint:String = myDate.getDate()+" "+mo[myDate.getMonth()]+" "+myDate.getFullYear()+"г."

this.createEmptyMovieClip("vremya_mc", this.getNextHighestDepth());
var N:TextFormat = new TextFormat();
N.font = "Trebuchet MS";
N.color = 0xFFFFCC;
N.size = 20;
//chas
vremya_mc.createTextField("Ch_de", 0, 0, 0, 10, 20);
vremya_mc.Ch_de.autoSize = true;
vremya_mc.Ch_de.setNewTextFormat(N);
vremya_mc.Ch_de.text = 0;
vremya_mc.createTextField("Ch_ed", 1,(vremya_mc.Ch_de._x+vremya_mc.Ch_de._width),0,10,20);
vremya_mc.Ch_ed.autoSize = true;
vremya_mc.Ch_ed.setNewTextFormat(N);
vremya_mc.Ch_ed.text = 0;
vremya_mc.createTextField("Ch_ra", 2,(vremya_mc.Ch_ed._x+vremya_mc.Ch_ed._width),0,10,20);
vremya_mc.Ch_ra.autoSize = true;
vremya_mc.Ch_ra.setNewTextFormat(N);
vremya_mc.Ch_ra.text = ":";
//minuti
vremya_mc.createTextField("Mi_de", 3, (vremya_mc.Ch_ra._x+vremya_mc.Ch_ra._width), 0, 10, 20);
vremya_mc.Mi_de.autoSize = true;
vremya_mc.Mi_de.setNewTextFormat(N);
vremya_mc.Mi_de.text = 0;
vremya_mc.createTextField("Mi_ed", 4,(vremya_mc.Mi_de._x+vremya_mc.Mi_de._width),0,10,20);
vremya_mc.Mi_ed.autoSize = true;
vremya_mc.Mi_ed.setNewTextFormat(N);
vremya_mc.Mi_ed.text = 0;
vremya_mc.createTextField("Mi_ra", 5,(vremya_mc.Mi_ed._x+vremya_mc.Mi_ed._width),0,10,20);
vremya_mc.Mi_ra.autoSize = true;
vremya_mc.Mi_ra.setNewTextFormat(N);
vremya_mc.Mi_ra.text = ":";
//secundi
vremya_mc.createTextField("Sec_de", 6, (vremya_mc.Mi_ra._x+vremya_mc.Mi_ra._width), 0, 10, 20);
vremya_mc.Sec_de.autoSize = true;
vremya_mc.Sec_de.setNewTextFormat(N);
vremya_mc.Sec_de.text = 0;
vremya_mc.createTextField("Sec_ed", 7,(vremya_mc.Sec_de._x+vremya_mc.Sec_de._width),0,10,20);
vremya_mc.Sec_ed.autoSize = true;
vremya_mc.Sec_ed.setNewTextFormat(N);
vremya_mc.Sec_ed.text = 0;

//razmeshenie
vremya_mc._x = (Stage.width-vremya_mc._width)/2;
vremya_mc._y = (Stage.height-vremya_mc._height)/2;

vremya_mc.onRollOver = function(){
        viewHint();
}
vremya_mc.onRollOut = function(){
        hint_list.removeTextField();
}
vremya_mc.onEnterFrame = function(){
        var D:Date = new Date();
        var ch=D.getHours();
        this.Ch_de.text=Math.floor(ch/10);
        this.Ch_ed.text=ch%10;
        var min=D.getMinutes();
        this.Mi_de.text=Math.floor(min/10);
        this.Mi_ed.text=min%10;
        var sec=D.getSeconds();
        this.Sec_de.text=Math.floor(sec/10);
        this.Sec_ed.text=sec%10;
}

там есть такой пункт:getHours(),у Вас я егшо не вижу
И оформляйте свои коды тегами.

alexcon314 01.09.2008 00:01

Код:

echo '&lt;dat h=\"'.$hour.'\"&gt;';
А если так?
Код:

echo "<dat h=\"$hour\"/>";

DeeMan757 01.09.2008 01:07

Цитата:

Сообщение от alexcon314 (Сообщение 761498)
Код:

echo '&lt;dat h=\"'.$hour.'\"&gt;';
А если так?
Код:

echo "<dat h=\"$hour\"/>";

пробовал, так только хуже

DeeMan757 01.09.2008 20:15

ни кто не знает?

alexcon314 01.09.2008 23:10

Плюс за ап.

DeeMan757 04.09.2008 21:00

неужели такая сложная проблема, что никто не знает?

alexcon314 05.09.2008 00:08

DeeMan757, вам уже сделали замечание за ап темы. Три плюса означают бан.

Ваш код AS без изменений (только адрес http:// другой) и ваш же код PHP с заменой строки
Код:

echo '&lt;dat h=\"'.$hour.'\"&gt;';
на
Код:

echo "<dat h=\"$hour\"/>";
прекрасно работают. Стрелочки указывают время правильно.
В чем проблема? Сформулируйте ясно. Ваше
Цитата:

пробовал, так только хуже
мне, например, ни о чем не говорит.

DeeMan757 05.09.2008 02:43

сорри за апы, просто очень срочно нужно було найти ошибку...
изначально в PHP коде была именно строка
Код:

echo "<dat h=\"$hour\"/>";
но с ней часы вообще не запускались.. только циферблат, без стрелок.
когда я заменил ее на
Код:

echo '&lt;dat h=\"'.$hour.'\"&gt;';
появились стрелки, но нормально шли только минутная и секундная.. а часовая показывала только 12ч
во флеше если запустить тест он показывает
&lt;dat h=23&gt;
0
0
0
0
итд

в чем дело я не знаю, вот и спросил..
alexcon314, вы сказали что код рабочий, вы его проверяли? заливали на сервер?

alexcon314 06.09.2008 14:15

Тестил на своем локальном апаче. Передача данных в пхп
Код:

echo "<dat h=\"$hour\"/>";
у меня приводит к трейсу во флэше как нормального xml.
Вообще, можете попробовать использовать LoadVars.
Код:

echo "h=$hour&";
Код:

var lv = new LoadVars();
lv.onLoad = function(s) {
        if (s) {
                trace(this.h);
        } else {
                trace('Ошибка при загрузке.');
        }
};
lv.load('http://server/time.php');


DeeMan757 06.09.2008 15:04

спасибо! попробую

DeeMan757 07.09.2008 18:23

странно... все работает в первоначальном варианте... наверное у меня что то с сервером не так было...

хотя нет.. есть баг! при открыти часов они правелно показывают время, но если к примеру время 18:30 то часовая стрелка стоит не между 6 и 7 а ровно на 6 как если бы было 18:00. и когда с 18:59 часы должны перейти на 19:00, они переходят опять на 18:00... если перезапучтить флешку, она опять укажет нормальное время на момент запуска.. к примеру уже 19:04.. как с этим бороться?

alexcon314 07.09.2008 23:56

Код:

this.onEnterFrame = function() {
        var time:Date = new Date();
        //Сохранение текущего времени
        var sec = time.getSeconds();
        var min = time.getMinutes();
        var hour = time.getHours();
        //Вращение стрелок
        seconds._rotation = sec * 6;
        minutes._rotation = (min + sec / 60) * 6;
        hours._rotation = (hour + min / 60) * 30;
        };

Вот простой скрипт часов. Заметьте, что положение клипов стрелок должно быть вертикальное с точкой регистрации внизу.
Потрейсите ваши переменные. Например вы обращаетесь к объекту Data(), не создав его преред этим: в onLoad и в EnterFrame.


Часовой пояс GMT +4, время: 17:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.