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

8bit 24.04.2008 03:05

частичное изменение цвета клипа(программно)
 
Я программно меняю цвет подгружаеваемого flash клипа, цвет ессно меняется у всего клипа. Можно указать где именно надо указать цвет, а не по во всём клипе?Ведь работать с подругажаевыми mc'шками клипа нельзя из грузищего скрипта, у меня эффекта небыло никакого

так гружу swf и меняю цвет, в нем все mc'шки аттачутся, а не присуствую в клипе сразу
Код:

  _root.createEmptyMovieClip("empty_mc_1", getNextHighestDepth());
    _root.empty_mc_1.loadMovie("clip.swf");
    _root.empty_mc_1._x = 100;
    _root.empty_mc_1._y = 100;
    var color_1:Color = new Color(empty_mc_1");
    color = Math.round( Math.random()*0xFFFFFF );
    color_1.setRGB(color);

прощу помощи, если не затруднит

Vertax 24.04.2008 03:27

Кто сказал, что нельзя? Можно, и даже нужно!!!
НО... сначала нужно дождаться загрузки клипа. Проще всего это сделать через MovieClipLoader (стандартный пример):
Код:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("YourImage.swf", container);

onLoadInit = function(mc:MovieClip) {
    //Клип загружен, выполняем действия
}

а только после этого обращаться к клипам.

qazwsx 24.04.2008 08:45

вообщето LoadInit говорит о загрузке первого кадра:)

Vertax 24.04.2008 13:53

Цитата:

вообщето LoadInit говорит о загрузке первого кадра
Вообще то, если верить help'е, событие происходит, когда код в первом кадре был запущен.
Оригинал: Invoked when the actions on the first frame of the loaded clip have been executed.

qazwsx 24.04.2008 14:14

Да, ты прав, а я был молод и глуп :)

8bit 26.04.2008 01:23

По такому событию не подходит, вариант только прелоадер, но тут ваще непонимаю как работает компиллятор, вот нерабочий код, что нетак в нем?
Код:

this.but_bit_1.video_m.onRelease = function(){
  F_preloader = false;
  var container:MovieClip = createEmptyMovieClip("container",getNextHighestDepth());
    var mcLoader:MovieClipLoader = new MovieClipLoader();
    mcLoader.addListener(this);
    mcLoader.loadClip("videog/videog.swf", container);
    _root.container._x = 100;
    _root.container._y = 100;
    F_preloader(container);
      if (F_preloader) {
        trace("test");
        var mycolor:Color = new Color(_root.container.main_p.e_main);
        rcolor = Math.round( Math.random()*0xFFFFFF );
        mycolor.setRGB(rcolor);
        }
}

Код:

F_preloader = function (mc){
_root.createEmptyMovieClip("detect_mc", 100);
detect_mc.onEnterFrame = function() {
var gbl = _root[mc].getBytesLoaded();
var gbt = _root[mc].getBytesTotal();
if (gbl == gbt && gbl>30) {
ttt.text = "100%";
removeMovieClip(this);
return true;
} else {
ttt.text = int(gbl/gbt*100)+"%";
return false;
}
};
};


MrPoma 26.04.2008 02:11

Код:

import flash.geom.Transform;
import flash.geom.ColorTransform;

var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);

var container:MovieClip = this.createEmptyMovieClip('container', this.getNextHighestDepth());
container._x = 100;
container._y = 100;

var trans:Transform = new Transform(container);
var blueColorTransform:ColorTransform = new ColorTransform(0, 1, 1, 1, 0, 0, 255, 0);

btn.onRelease = function(){
        loader.loadClip('videog/videog.swf', container);
}

onLoadProgress = function(mc:MovieClip, l:Number, t:Number){
        if(t > 0){
                txt.text = Math.round(l / t * 100) + '%';
        }
}

onLoadInit = function(mc:MovieClip){
        trans.colorTransform = blueColorTransform;
}


8bit 26.04.2008 03:22

MrPoma спасибо что не оставил без ответа, но этот код мне говорит о том же что и qazwsx не нахожу разницу, мало опыта у меня c AS

Psycho Tiger 26.04.2008 13:00

А что в этом коде страшного?
Код:

//загружаем классы для преобразования и работы с цветом
import flash.geom.Transform;
import flash.geom.ColorTransform;

//создаем лоадер
var loader:MovieClipLoader = new MovieClipLoader();
//добавляем слушателя
loader.addListener(this);

//контейнер, куда будем грузить клип
var container:MovieClip = this.createEmptyMovieClip('container', this.getNextHighestDepth());
//подбираем местечко
container._x = 100;
container._y = 100;

//создаем новую трансформацию для container
var trans:Transform = new Transform(container);
//Матрица преобразования цвета
var blueColorTransform:ColorTransform = new ColorTransform(0, 1, 1, 1, 0, 0, 255, 0);


//тыкаем на кнопке - загружаем клип
btn.onRelease = function(){
        loader.loadClip('videog/videog.swf', container);
}
//когда грузим...
onLoadProgress = function(mc:MovieClip, l:Number, t:Number){
        if(t > 0){ //показываем проценты
                txt.text = Math.round(l / t * 100) + '%';
        }
}
//когда загрузили
onLoadInit = function(mc:MovieClip){
//в трансформации меняем свойство colorTransform на заранее созданное (см. матрица преобразования цвета)
        trans.colorTransform = blueColorTransform;
}


8bit 27.04.2008 18:02

спасибо всем, разобрался


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

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