Просмотр полной версии : часы не работают! в чем дело?
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 '<dat h=\"'.$hour.'\">';
?>
Вот Вам код работающих цифровых часов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 '<dat h=\"'.$hour.'\">';
А если так?
echo "<dat h=\"$hour\"/>";
DeeMan757
01.09.2008, 01:07
echo '<dat h=\"'.$hour.'\">';
А если так?
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 '<dat h=\"'.$hour.'\">';на
echo "<dat h=\"$hour\"/>";
прекрасно работают. Стрелочки указывают время правильно.
В чем проблема? Сформулируйте ясно. Ваше
пробовал, так только хужемне, например, ни о чем не говорит.
DeeMan757
05.09.2008, 02:43
сорри за апы, просто очень срочно нужно було найти ошибку...
изначально в PHP коде была именно строка
echo "<dat h=\"$hour\"/>";
но с ней часы вообще не запускались.. только циферблат, без стрелок.
когда я заменил ее на
echo '<dat h=\"'.$hour.'\">';
появились стрелки, но нормально шли только минутная и секундная.. а часовая показывала только 12ч
во флеше если запустить тест он показывает
<dat h=23>
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.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.