Форум 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=101024)

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
Есть кто живой?

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

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

Вложений: 1
Цитата:

Сообщение от Townshand
С этим кодом у меня все время небо получается серое.

Время системное переставь )) или ночи дождись - потемнеет
Вложение 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
Вариант с подгрузкой или аттачем мувиков мне кажется более удобным - можно сделать не просто цветные квадраты, а пустить облака, осадки ...
А если нужна плавность смены цвета, то включить твой код уже в них.;)


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

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