PDA

Просмотр полной версии : Часы.


mymyboy
25.05.2009, 11:15
Привет :)

Сделал я тут часы электронные, каждая цифра в которых картинка. Так вот, все нормально, все работает, но не получается у меня сделать так, чтобы они менялись а не были статичны (сейчас просто показывается время на момент генерации скрипта).

Может кто подскажет как это реализовать?

stop();

tm = new Date();
var min = tm.getMinutes();
var hr = tm.getHours();

if (hr < 10) {
attachMovie("c0", "c0_h", this.getNextHighestDepth(), {_x:0, _y:0});
} else if (hr > 9 & hr < 20) {
attachMovie("c1", "c1_h", this.getNextHighestDepth(), {_x:1.5, _y:0});
} else {
attachMovie("c2", "c2_h", this.getNextHighestDepth(), {_x:0, _y:0});
}

if (hr == 1) {
attachMovie("c1", "c1", this.getNextHighestDepth(), {_x:19.5, _y:0});
} else if (hr == 11) {
attachMovie("c1", "c1", this.getNextHighestDepth(), {_x:19.5, _y:0});
} else if (hr == 21) {
attachMovie("c1", "c1", this.getNextHighestDepth(), {_x:19.5, _y:0});
} else if (hr < 10) {
attachMovie("c"+h, "c"+h, this.getNextHighestDepth(), {_x:18, _y:0});
} else if (hr > 9 & hr < 20) {
attachMovie("c"+(hr-10), "c"+(hr-10), this.getNextHighestDepth(), {_x:18, _y:0});
} else {
attachMovie("c"+(hr-20), "c"+(hr-20), this.getNextHighestDepth(), {_x:18, _y:0});
}

if (min < 10) {
attachMovie("c0", "c0_m", this.getNextHighestDepth(), {_x:48, _y:0});
} else if (min > 9 & min < 20) {
attachMovie("c1", "c1_m", this.getNextHighestDepth(), {_x:49.5, _y:0});
} else if (min > 19 & min < 30) {
attachMovie("c2", "c2_m", this.getNextHighestDepth(), {_x:48, _y:0});
} else if (min > 29 & min < 40) {
attachMovie("c3", "c3_m", this.getNextHighestDepth(), {_x:48, _y:0});
} else if (min > 39 & min < 50) {
attachMovie("c4", "c4_m", this.getNextHighestDepth(), {_x:48, _y:0});
} else {
attachMovie("c5", "c5_m", this.getNextHighestDepth(), {_x:48, _y:0});
}

if (min < 10) {
attachMovie("c"+min, "c"+min+"_m1", this.getNextHighestDepth(), {_x:66, _y:0});
} else if (min > 9 & min < 20) {
attachMovie("c"+(min-10), "c"+min+"_m1", this.getNextHighestDepth(), {_x:67.5, _y:0});
} else if (min > 19 & min < 30) {
attachMovie("c"+(min-20), "c"+min+"_m1", this.getNextHighestDepth(), {_x:66, _y:0});
} else if (min > 29 & min < 40) {
attachMovie("c"+(min-30), "c"+min+"_m1", this.getNextHighestDepth(), {_x:66, _y:0});
} else if (min > 39 & min < 50) {
attachMovie("c"+(min-40), "c"+min+"_m1", this.getNextHighestDepth(), {_x:66, _y:0});
} else {
attachMovie("c"+(min-50), "c"+min+"_m1", this.getNextHighestDepth(), {_x:66, _y:0});
}

Juice_Green
25.05.2009, 11:40
обновление времени веди в событие onEnterFrame

mymyboy
25.05.2009, 12:08
А перерисовать как по грамотному их? Клипы-то созданные останутся.

Или не останутся?

Juice_Green
25.05.2009, 12:13
если аттачить в мувиклип, который уже существует, то старое содержимое заменится новым аттачем.

mymyboy
25.05.2009, 12:33
Либо быжи не греют, либо я что-то не понимаю...

Запихал весь этот скрипт в клип clock, создал другой клип clock_m и в нем аттачил клип clock. Происходит наслоение постоянное цифр одна на другую и жутко тормозит :(

Juice_Green
25.05.2009, 13:43
вот примерчик, привел на примере секунд:
var s0=this.createEmptyMovieClip('s0', this.getNextHighestDepth());
var s1=this.createEmptyMovieClip('s1', this.getNextHighestDepth());

this.onEnterFrame=function(){
var now=new Date();
var cur_s=now.getSeconds();
var cur_s0=Math.floor(cur_s/10);
var cur_s1=cur_s%10;
s0['num'].removeMovieClip();
s1['num'].removeMovieClip();
s0.attachMovie('num'+cur_s0, 'num', s0.getNextHighestDepth(),{_x:30,_y:40});
s1.attachMovie('num'+cur_s1, 'num', s1.getNextHighestDepth(),{_x:50,_y:40});
}

, где num0....num9 символы из библиотеки

ниже аттач с примером, сохранил под flash 8