PDA

Просмотр полной версии : Как вставить SWF как изображение в MovieClip


art_maestro
16.05.2013, 20:46
Здравствуйте.

Имеется ряд swf файлов, в каждом из которых есть один MovieClip c неким именем.

Есть еще один swf файл, в который надо вставить вышеуказанные swf,только так, чтобы можно было обратиться к свойствам MovieClipов, которые содержаться в вышеуказанных swf.

Пример.

Есть файл 1.swf, его нужно вставить в 2.swf - это я сделал, но мне надо чтобы он был не В Loader, а В MovieClip и смог обращаться к свойствам 1.swf, например прозрачность.

Мои код


import flash.display.*;
import flash.net.*;
import flash.events.*;

public class clMain extends Sprite
{
private var loader:Loader = new Loader();
private var mc:MovieClip;
private var build:MovieClip = new MovieClip();

public function clMain()
{
var Name1:String = "beer";
var loader:Loader = new Loader();
var path:String = "resource/buildings/" + Name1 + ".swf";
loader.load( new URLRequest(path));
addChild( loader );
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event){loadBilding(evt, loader, build)}, false, 0, true);


}

Подскажите как это организовать, заранее спасибо!

ProcXel.A
16.05.2013, 21:47
Например, вот код для "1.swf":
import flash.display.MovieClip;

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill( 0xff0000 );
mc.graphics.drawRect( 0, 0, 100, 100 );
this.addChild( mc );

А это код для "2.swf":
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;

var swf1:MovieClip;

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, Loaded );
loader.load( new URLRequest( "1.swf" ) );

function Loaded( e:Event ):void {
swf1 = loader.content as MovieClip;
this.addChild( swf1 );
stage.addEventListener( Event.ENTER_FRAME, MoveMovieInSwf1 );
}

function MoveMovieInSwf1( e:Event ):void {
swf1.mc.x = Math.sin( getTimer() / 1000 ) * 100;
}

Как видишь, второй swf загружает первый swf и начинает двигать мувиклип внутри загруженного swf. Точно так же можно изменять и альфа, и всё остальное.

art_maestro
16.05.2013, 23:33
Ой, как я Вам благодарен, спасибо огромное. Я уже запутался что и как. Дай Бог Вам здоровья!:)

art_maestro
19.05.2013, 00:47
Пример у меня получился, когда я делал в новом проекте. Но как только внедряю в проект с движком as3isolib, то нечего не получается.

Имеется сетка созданная на as3isolib на нее сверху, с помощью панели инструментов был создан и наложен прямоугольник, который был преобразован в мувик mc_building.

Использую данный код



private function onBuilding(e:Event):void
{
var Name1:String = "beer";
var path:String = "resource/buildings/" + Name1 + ".swf";
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBilding, false, 0, true);
loader.load(new URLRequest(path));
build = loader.content as MovieClip;
mc_building.addChild( build ); // добавляю в панель (прямоугольник)
//addChild( build );

}


В функции loadBuilding встроена функций trace("load ok");

Получается следующее.. на панели (мувике mc_building) виден черный квадрат, как бы вставилось, но внутри квадрата нечего нет.

http://www.flasher.ru/forum/attachment.php?attachmentid=29535&stc=1&d=1368906374

caseyryan
19.05.2013, 10:22
Ой, как я Вам благодарен, спасибо огромное. Я уже запутался что и как. Дай Бог Вам здоровья!:)

Монолог?

art_maestro
19.05.2013, 13:55
Нет. Мне отвечали на мой первый вопрос. Потом я не знаю куда сообщение делось.