Skocz do zawartości

FLASH: 2 swf files into 1


bambosz

Rekomendowane odpowiedzi

Witam,

 

drodzy forumowicze, poratujcie. Szefostwo kazało mi zrobić 2 proste banerki flash na stronę WWW (z tym nie miałem kłopotu).

Po przygotowaniu obu projektów okazało się że na stronie może być zamieszczony tylko 1 plik swf w danej chwili (a pytałem jeden czy kilka ....), opcji dodania jakiegoś skryptu podmieniającego pliki nie mam (nie mam dostępu do strony, nie licząc opcji dodawania tekstu i podstron) :/.

 

Jak w prosty sposób połączyć dwa pliki swf w jeden ciągły zapętlony ?

Na sieci znalazłem tylko kilka stron z odnośnikami do średnio działających programów, które podobno to umożliwiają (nie umożliwiły :/).

Nie znam się na action scrypt więc nie za bardzo jestem w stanie połączyć je od strony ... "programistycznej" ?

 

Męczę te projekty w Adobe flash CS4/5, opcja import export nie jest w żadnym stopniu pomocna :/.

 

Proszę ... POMOCY !!! xD

 

Pozdrawiam

bambosz.

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 8
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

ola-f... ładuj je na zmianę to łatwo powiedzieć, trudniej zrobić :/

pogooglowałem trochę i trafiłem na różne takie dziwne funkcje typu:

movieClip.loadMovie("Nazwapliku.swf);

lub

 

loadMovie(url:String, target:Object, [method:String]) : Void

ale to nijak nie działa, co rusz to mi wywala jakieś błędy :/

 

działa mi to:

var loader:Loader = new Loader();

loader.load(new URLRequest('3D.swf'));

addChild(loader);

 

ale jak teraz wczytać po tym 2 pliczek (wstawienie tego w 2 klatke nie pomogło ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Tak

próbowałem 2 loader wstawić w klatce po skończeniu pierwszej animacji ale wtedy odtwarzają się jakby jednocześnie ;\

 

w którejś kolejnej klatce dodałem

var loader:Loader2 = new Loader();

loader2.load(new URLRequest('test.swf'));

addChild(loader2);

 

ciężko mi to idzie bo we flashu robię w zasadzie same animacje na timelinie :)

Odnośnik do komentarza
Udostępnij na innych stronach

to powinno działać. stwórz nowy plik o wy miarach i framerate tych dwóch.

w Array(100,100) wpisz kolejno ilosc klatek animacji klipu, ktory będzie ładowany jako drugi, na drugim miejscu tego ładowanego jako pierwszy

A='sciezka/plik'; - nazwa pliku i ściezka. pomin numer czyli np. flash/plik1.swf (musza miec takie same nazwy z roznica numeru np. plik1.swf i plik2.swf - mowa o tych ładujących się).

To tyle - mam dziś zajeb wiec jak nie działa to nie pomogę ;) a pewnie nie dziala bo nie mam teraz jak sprawdzić.

 

Na zmiane co okreslona ilość klatek wrzuca pliki swf. pominałem warunek gdy drugi sie nie załaduje zanim pierwszy sie odtworzy.

 

var K1=new Array(100,100);var C=0; var V=1; var A='sciezka/plik';

function getM(A){var picL=new Loader(); picL.load(new URLRequest(A+V+'.swf')); picL.contentLoaderInfo.addEventListener(Event.INIT, gotIt);};

function gotIt(e:Event){V++; getM(A);}; this.addChild(getM(A)); this.addEventListener(Event.ENTER_FRAME,eFr);

function eFr(e:Event){C++; if(C>=K1[V-1]){this.removeChildAt(0);if(V==2){V=1}else{V=2}; this.addChild(getM(A));C=0}}

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

ola-f: hehe, musisz popracować nad czytelnością tego co zapodajesz na forum :] w sumie pewnie dobrze napisałeś, ale nie czytając tego co Ty dałeś, ja proponuje coś takiego:

 

package

{

import flash.display.Loader;

import flash.display.MovieClip;

import flash.events.Event;

import flash.net.URLRequest;

/**

* ...

* @author bolitic

*/

public class LoadingSwf

{

private var loaderSwf:Loader;

private var mySwf:MovieClip;

private var main:MovieClip;

 

public function LoadingSwf(main:MovieClip)

{

this.main = main;

loaderSwf = new Loader();

loaderSwf.load(new URLRequest("banner2.swf"));

loaderSwf.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoaded);

}

 

private function onCompleteLoaded(e:Event):void

{

mySwf = loaderSwf.content as MovieClip;

main.addChild(mySwf);

 

mySwf.addEventListener(Event.ENTER_FRAME, checkIfEndOfSwf);

}

 

private function checkIfEndOfSwf(e:Event):void

{

if (mySwf.currentFrame == 100)

{

main.play();

}

}

 

}

 

}

 

uwagi: musisz dać w ostatniej klatce każdego banera: "stop()", gdyż ENTER_FRAME może nie zadziałać. Obiekt main, to pierwszy baner, który zarazem jest klasą główną aplikacji. Gdy banner2 bedzie na klatce 100, wówczas zacznie grać banner 1, czyli main:MovieClip.

 

Pozdrawiam!

 

EDIT: aha, i jeszcze jedno: ostatnia klatka każdego banera musi być bez żadnego kontentu, inaczej banner2.swf będzie przykrywał banner1 (main)

Edytowane przez bolitic
  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

Panowie wielki dzięki. Wszystkie te kody napewno się przydadzą, bo będę musiał stworzyć jakiś flashowy loader bo się wykończę xD.

Dziś sobie poradziłem .... w sposób chyba najprostszy.... wszystkie warstwy z 1 projektu w katalog, kopiowanie, wklejanie do 2 projektu i zabawa w przesuwanie xD.

 

Jeszcze raz dzięki.

 

Ps. Ola-f, dzięki za pomoc, ale jak dla mnie to to było kompletnie nieczytelne (czyt. niezrozumiałe) xD.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności