Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   загрузка клипа и его редактирование (http://www.flasher.ru/forum/showthread.php?t=115839)

monkey monk 12.09.2008 00:00

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

mre 12.09.2008 01:43

Это возможно.
Объяснять не буду, поскольку это вызовет у Вас кучу других вопросов.

monkey monk 12.09.2008 06:56

Я так и думал. Ну ладна понадеемся, что будет кто-нибудь смелее чтобы ответить на все вопросы. Спасибо что дали надежду.

kackbip 12.09.2008 09:12

Мне тоже интересно как это сделать.

Вот обычная загрузка другой флэшки и взятие из нее како-го то мувиклипа:
Код:

function loadSWF(url):void{
    var req:URLRequest = new URLRequest(url);
    var ldr:Loader = new Loader();
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);
    ldr.load(req);
}

function onLoad(evt:Event):void{
    var swf:DisplayObject = evt.target.loader.content;
    var нужный_мувиклип:MovieClip = swf["нужный_мувиклип"];
}

Но человек, кажется, не хочет полностью грузить флэшку, где находится нужный_мувиклип. А как это сделать? Кто подскажет. Неужели байткод нам в руки?

monkey monk 13.09.2008 23:47

kackbip абсолютно прав, планируемый мною проект может заниматься слишком много, да и к тому же его нужно постоянно дополнять новыми мувиками, а каждый раз перезаливать его не очень удобно. Возможно кто-то подскажет что-нибудь по-проще в исполнении.

ramshteks 14.09.2008 00:49

каждый мувик храни в отдельной swf

а вообще ты как себе рпедставляешь брать мувик з незагруженного swf? ты если представляешь как это сделать то дерзай все получится))

AL.exe 14.09.2008 01:20

Только если заранее знать оффсет в байтах, на котором этот мувиклип находится и грузить байткод, а потом каким-либо образом разбирать. Но это слишком сложно и не уверен, что вообще возможно средствами AS3, да и архитектура swf-файла может быть сложнее, чем я представляю :) Проще хранить в отдельных swf-файлах. Так делают, к примеру, разработчики ММОРПГ на флеш (конкретные примеры приводить не стану).

ramshteks 14.09.2008 01:24

нет с байт кодом все понятно. даже если представить что ас3,0 может так сделать, то возникает вопрос в том, а кому это надо??? когда проще и быстрее и по всем критериям лучше хранить в разных свф.
по мне так автортемы страдает фигней, не в обиду будет сказано

AL.exe 14.09.2008 04:04

Цитата:

Сообщение от monkey monk (Сообщение 764065)
планируемый мною проект нужно постоянно дополнять новыми мувиками, а каждый раз перезаливать его не очень удобно..

К тому же, судя по тому, что вы говорите, вам будет удобнее хранить мувиклипы в отдельных swf-ках :)

Alex Lexcuk 14.09.2008 12:06

Ну вот к примеру есть флешка
http://www.dnadillo.dn.ua/fla/House_mc.swf
У нее в библиотеке два мувика, у них в Lincage прописаны классы
Gerl_mc
Cat_mc
я это знаю... теперь все это знают
Нично не мешает загрузить флешку ПОЛНОСТЬЮ и взять эти классы так
Код:

package {
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import flash.text.*;
        import flash.utils.*;
        import flash.media.*;

        dynamic public class Receiver_doc extends Sprite{;
        public var loader:Loader;
        public var req:URLRequest;
        var Gerl_class:Class;
        var Dog_class:Class;
        var gerl_mc:MovieClip;
        var dog_mc:MovieClip;
        var i:int;
        public function Receiver_doc() {
                loader = new Loader();
                //addChild(loader);
                req = new URLRequest("House_mc.swf");
                loader.load(req);
                loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
        }

        public function onLoadProgress(param1:ProgressEvent):void {
                txt.text = "PROGRESS " + int(100 * (param1.bytesLoaded / param1.bytesTotal)) + "%";
        }

        public function onLoadComplete(param1:Event):void {
                removeChild(txt);
                Gerl_class = loader.contentLoaderInfo.applicationDomain.getDefinition("Gerl_mc") as Class;
                gerl_mc = new Gerl_class();
                addChild(gerl_mc);
                gerl_mc.x = -250;
                gerl_mc.y=-50;

                gerl_mc = new Gerl_class();
                addChild(gerl_mc);
                gerl_mc.x = 100;
                gerl_mc.y=-50;

                Dog_class = loader.contentLoaderInfo.applicationDomain.getDefinition("Cat_mc") as Class;

                for (i=0; i<5; i++) {
                        dog_mc = new Dog_class();
                        addChild(dog_mc);
                        dog_mc.x=200;
                        dog_mc.y=40+i*70;
                }

        }
}
}

Получиться это
http://www.dnadillo.dn.ua/fla/Receiver_mc.swf
На девочку можно навести мышку, она споет песенку
А собака просто затормозится
http://www.dnadillo.dn.ua/fla/house-receiver-mc.zip


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

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