PDA

Просмотр полной версии : Изменение предметов в зависимости от времени.


Townshand
09.09.2007, 21:04
Делаю сайт для своей флеш игрушки
типа в хедере стоит большая флешка где типа воин с мечем стоит на поляне, а на заднем плане небо. Я хочу чтобы небо меняло свой цвет в зависимости от времени. Тоесть утром ораньжевое, днем голубое, вечером темно синее итп.
Подскажите плиз как сделать это.

Было бы не плохо если бы периодически начинался дождь, снег и так далее...

Townshand
09.09.2007, 22:00
Есть кто живой?

as_68
09.09.2007, 22:10
Делаешь мувики неба для разного времени суток.
Считываешь время с компа открывшего сайт или грузишь во флэшку переменную времени суток (если ты, например, используешь PHP).
И подгружаешь нужный мувик. ФСЁ!!!:yahoo:

udaaff
09.09.2007, 22:11
Townshand, Это не чат, а форум, ответ можно и день прождать.

ActionScript 2.0 Language Reference > ActionScript classes > Date

etc
09.09.2007, 22:17
Есть кто живой?
Форум не является чатом. Вам могут ответить через день, через неделю, через месяц или вообще не ответить. Но вы не имеете права поднимать тему подобными постами. В следующий раз подобный пост будет расценен как флуд, со всеми вытекающими последствиями.

Townshand
09.09.2007, 22:27
Ладно ладно, извините.
спасибо as_68
Сделал как сказал... получилось.

†‡Paladin‡†
09.09.2007, 22:52
А можно сделать 1 прозрачный клип с динамическим задним фоном. Цвет менять в зависимости от текущего времени клиента. Гораздо более веселый и легковесный вариант. (Кто видел sps3 то наверняка знает, что ихняя волна меняет цвет в зависимости от времени, дня, недели и месяца. Типа фишка)

Kikasso
09.09.2007, 23:48
как-то так:
var bg = createEmptyMovieClip('bg',1);
with(bg){
beginFill(0);
lineTo(Stage.width, 0);
lineTo(Stage.width, Stage.height);
lineTo(0, Stage.height);
lineTo(0, 0);
endFill();
}
var bgColor = new Color(bg);
var __sec = 0;
var __val = 0;
addProperty('sec', getSec, setSec);
onEnterFrame = setCurrentSec;
//onEnterFrame = testIt;

function getSec(){ return __sec; }
function setSec(val){
if(val == __sec)return;
__sec = val;
setBgColor(val);
}

function setBgColor(secNow){
secNow = (secNow + 9*60*60)%(24*60*60); // 9 = 24 - 15
val = Math.abs(Math.round( 0xFF - ( secNow * 0xFF)/ (60*60*12) ) );
if( __val == val )return;
__val = val;
// trace(val);
bgColor.setRGB( joinRGB(val,val,val) );
}

function setCurrentSec(){
var now = new Date();
sec = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();
}

function testIt(){
if( i == undefined )i = 0;
var now = new Date();
now.setHours(i);
trace( "час: " + i++ );
if(i>23)i=0;
sec = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();
}

function splitRGB( color:Number):Array {
var r:Number = (color >> 16);
var g:Number = (color >> 8) & 0xFF;
var b:Number = color & 0xFF;
return [r,g,b];
}
function joinRGB( r,g,b ){
return ( r << 16 | g <<8 | b );
}
Самое яркое небо будет в 15:00, вроде бы солнечный полдень в России в это время ( декретное + летнее + еще какое-то ). Гуглить лень, надо днем глянуть в окно и посмотреть, если что поправить переменную. Я точно помню, что не в 12:00, ставил опыты на местности.

Townshand
10.09.2007, 10:08
С этим кодом у меня все время небо получается серое.

Пытался делать по своему
тоесть создал клип в котором 24 кадра, и в каждом кадре типа небо определенного времени суток) тоесть если кадр 13 то речь идет о небе в 13:00

На первом кадре стоит чтото типа

time=new Date();
var hours = time.getHours()

а следом

if(hours<11)
{
GotoAndPlay(10);
}
if(hours<12)
{
GotoAndPlay(11);
}
if(hours<13)
{
GotoAndPlay(12);
}

и в таком духе... заканчивается все на

if(hours<24)
{
GotoAndPlay(23);
}
if(hours<1)
{
GotoAndPlay(24);
}

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

etc
10.09.2007, 10:11
Вероятно, потому что 0 меньше как 24, так и единицы.

з.Ы. Метода GotoAndPlay не существует, существует gotoAndPlay.

Kikasso
10.09.2007, 10:34
С этим кодом у меня все время небо получается серое. Время системное переставь )) или ночи дождись - потемнеет
17680


В вашем случае:
time=new Date();
gotoAndStop( time.getHours() +1 );

Townshand
10.09.2007, 11:35
Во спасибо!! выручил)

CrazyFlasher
10.09.2007, 11:39
а мне кажется будет лучше если использовать серверное время...чтоб у всех одинакого было

Townshand
10.09.2007, 11:52
Проблема теперь - я не знаю какое и когда небо))
И как можно реализовать Дождь, Снег там еще чтонить. Чтоб это происходило не всегда. Тоесть чел зашел на сайт скажим 100 раз, а на 101 раз там вдруг дождь долбанул) как это реализовать?

Kikasso
10.09.2007, 11:56
SharedObject

Townshand
10.09.2007, 12:10
Шикарно) теперь у меня есть все что нужно для того чтобы закончить) всем спасибо за помощь.

as_68
11.09.2007, 01:34
2 Kikasso
Вариант с подгрузкой или аттачем мувиков мне кажется более удобным - можно сделать не просто цветные квадраты, а пустить облака, осадки ...
А если нужна плавность смены цвета, то включить твой код уже в них.;)