Форум 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)
-   -   tween,изменение цвета (http://www.flasher.ru/forum/showthread.php?t=107948)

Haiat 12.02.2008 20:09

tween,изменение цвета
 
Добрый день.Хотел спросить как с помощью твина сделать такое:
например нужно чтобы мувик менял свой цвет плавно к чёрному, но неизвестно насколько % он сейчас черный.
То есть ситуация такая:при наведении он плавно меняется к белому например,при отведении к белому.
Мне нужна лишь строчка с твином.спасибо:)

iNils 12.02.2008 20:13

За вас я писать не буду, но подсказать могу.
Вам надо завести переменную, которую твин будет менять от 0 до 100, и на событие onMotionChanged менять через Color.setTransform составляющие исходя из значений вашей перменной.

Molecula 12.02.2008 21:01

Пример из Хелпа по изменению яркости:
Код:

import flash.filters.ColorMatrixFilter;
import mx.transitions.Tween;
import mx.transitions.easing.*;
System.security.allowDomain("http://www.helpexamples.com");
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
    // center movie clip instance on Stage
    target_mc._x = (Stage.width - target_mc._width) / 2;
    target_mc._y = (Stage.height - target_mc._height) / 2;
    target_mc.watch("brightness", brightnessWatcher, target_mc);
    // animate the target_mc movie clip between -100 and +100 brightness
    var myTween:Tween = new Tween(target_mc, "brightness", Elastic.easeOut, 100, -100, 3, true);
    myTween.onMotionFinished = function() {
        this.yoyo();
    };
};
this.createEmptyMovieClip("img_mc", 10);
var img_mcl:MovieClipLoader = new MovieClipLoader();
img_mcl.addListener(mclListener);
img_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", img_mc);

function brightnessWatcher(prop:String, oldVal:Number, newVal:Number, target_mc:MovieClip):Number {
    var brightness_array:Array = [1, 0, 0, 0, newVal,
            0, 1, 0, 0, newVal,
            0, 0, 1, 0, newVal,
            0, 0, 0, 1, 0];
    target_mc.filters = [new ColorMatrixFilter(brightness_array)];
    return newVal;
};

Вам остается лишь вместо яркости вставить свои функции и параметры.

Haiat 13.02.2008 01:20

Спасибо.Я не просил писать Вас мне код.просто я ни разу не работал с tween и поэтому не знаю её методов всяких и переменных которые надо внутри писать.И поэтому поппросил Вас написать мне сам tween.Спасибо. Разберусь сам:)но пока ждал ответат от одного человека сдела всё проще:) под чёрным разместил белый.И просто менял прозрачность:)

nOobCrafter 19.03.2009 17:15

Может кому надо будет, на основе найденных тут материалов скрестил, ежа и ужа в результате получил довольно неплохой скриптик:
Код AS1/AS2:

import flash.filters.ColorMatrixFilter;
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
var r:Number = 77/255;  // собсна цвета
var g:Number = 150/255; // собсна цвета
var b:Number = 25/255;  // собсна цвета
 
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip):Void
{
    // center movie clip instance on Stage
    target_mc._x = (Stage.width - target_mc._width) / 2;
    target_mc._y = (Stage.height - target_mc._height) / 2;
    target_mc.watch("grayscale", grayscaleWatcher, target_mc);
    // animate the target_mc movie clip between 0 and 1 grayscale
    // 1 - серый спектр, 0 цветной.
    var myTween:Tween = new Tween(target_mc, "grayscale", None.easeOut, 0, 1, 1, true);
                target_mc.onRollOver = function()
                {
                        var myTween:Tween = new Tween(this, "grayscale", None.easeOut, this.grayscale, 0, 1, true);
                }
                target_mc.onRollOut = function()
                {
                        var myTween:Tween = new Tween(this, "grayscale", None.easeOut, this.grayscale, 1, 1, true);
                }
};
 
this.createEmptyMovieClip("img_mc", 10);
var img_mcl:MovieClipLoader = new MovieClipLoader();
        img_mcl.addListener(mclListener);
        img_mcl.loadClip("inno_error.jpg", img_mc);  // указываем картинку..
 
function grayscaleWatcher(prop:String, oldVal:Number, newVal:Number, target_mc:MovieClip):Number
{
    target_mc.filters = [new ColorMatrixFilter([r * newVal + 1 - newVal, g * newVal, b * newVal, 0, 0,
                                                                  r * newVal, g * newVal + 1 - newVal, b * newVal, 0, 0,
                                                                  r * newVal, g * newVal, b * newVal + 1 - newVal, 0, 0,
                                                                  0, 0, 0, 1, 0])];
    return newVal;
};


loover 26.03.2009 19:43

а какой аналог свойства watch в AS3?

etc 26.03.2009 20:03

Пользуйтесь геттерами и сеттерами.


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

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