Swf.hu 2.0 címlap

Register or log in - lost password?

Swf.hu Twitter :: Swf.hu RSS

  • Index
  • Hírek
  • Fejlesztés
  • Flash Galéria
  • Fórum (beta)
  • Segédletek
  • Linkek
  • Állás/karrier
  • Könyvek
Swf.hu 2.0 fórum » Flash fejlesztés » ActionScript 3
[lezárva]

Általános Flash HELP - AS3

(582 hozzászólás) (69 voices)
  • Elindította apapp 1 év
  • Legutóbbi válasz szerzője Reider

Címkék:

  • 3D
  • actionscript 3
  • appendText
  • as3
  • beágyazás
  • broadcast
  • combobox komponens
  • destruktor
  • display blending
  • Error #2007
  • fl.transitions.Tween
  • flash
  • FLVPlayback
  • getDefinitionByName
  • legfrissebb flash player verziószám
  • listItemRenderer
  • netconnection
  • NetStream
  • RED5
  • Security sandbox
  • serial port
  • setInterval
  • socket
  • SoundTransform
  • xml
« Előző1234…24Következő »
  1. mcmester21
    offline
    Tag

    re: mcmester21
    Sikerült megoldani. Ebbe a forrásba importáltam az swf-em.
    http://reghellin.com/milkbox/
    Sajna ez is csak magánfelhasználásra van.

    1 év íródott # Válasz erre
  2. mcmester21
    offline
    Tag

    re: balta

    Igen, ez a neve, csak nem tudtam, de nem találok kódot hozzá. Olyat keresek ami szabadon használható akárkinek. Nem tud valaki egy tutorialt vagy egy kódot?

    1 év íródott # Válasz erre
  3. balta
    offline
    Tag

    re: mcmester21

    lightbox ?

    1 év íródott # Válasz erre
  4. mcmester21
    offline
    Tag

    re: mcmester21
    Sikerült egy kódot találnom html-be:

    <script language="javascript" type="text/javascript">
     
    function hidediv() {
      document.getElementById('hideShow').style.display = 'none';
    }
     
    function showdiv() {
      document.getElementById('hideShow').style.display = 'inline';
    }
     
    </script>
    </head>
    <body>
     
    <div id="hideShow" style="display: none;">
    <embed src="japan.swf" width="100%" height="100%" align="middle" quality="high"
    </div>
     
    <a href="hidediv();">eltüntet</a>
     
    <a href="showdiv();">megjelenít</a>
     
    </body>
    </html>

    Viszont nekem, egy előugró ablak szerü kellene, ami nem változtat a honlapon semmit, szóval a háttérbe minden ugyanugy marad. A flashbe beirtam egy kilépő kódot:

    exit.addEventListener(MouseEvent.CLICK, closeApp);
    function closeApp(event:MouseEvent):void
    {     fscommand("quit"); }

    Viszont ezzel nem lép ki a honlapra vissza. Valaki tudna egy kis infót adni?

    1 év íródott # Válasz erre
  5. mcmester21
    offline
    Tag

    Szeretnék egy AS3-as flash animációt berakni egy honlapra olyan módon, hogy a honlapon lesz egy gomb és ha rákattintok bejönne a flash egy bizonyos méretben, viszont a flashbe van egy kikapcsolás gomb amivel ki tudok lépni a flashböl és visszajön a honlap. A flash kilépő gomb megvan, csak azt nem tudom, hogy a honlapon milyen kód kell ehez. Tudok segiteni?

    1 év íródott # Válasz erre
  6. azazdeaz
    offline
    Tag

    Heló, egy as2-ben írt swf, be tud tölteni és futtatni egy as3-as swf-et?

    1 év íródott # Válasz erre
  7. Suszi
    offline
    Tag

    re: Genin
    A második lehetőség nekem is eszembe jutott, csak gondoltam hátha van egy elegánsabb megoldás. Megnézem swfobjecttel, aztán eldöntöm, hogy melyik megoldásnál maradok. Egyébként röhej, hogy nincs egy ilyen funkció a flashben, na mindegy :).
    Köszi a segítséget!

    1 év íródott # Válasz erre
  8. Genin
    offline
    Tag

    re: Suszi
    swfobjectnél az expressinstall valahogy lekérdi ;)
    itt meg tudod nézni a kódot: http://code.google.com/p/swfobject/downloads/list

    a másik ami eszembe jutott, hogy simán kiolvasod az adobe oldaláról, hogy mit írnak ki, pl:

    var request:URLRequest = new URLRequest("http://www.adobe.com/products/flashplayer/features/");
    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, result);
    loader.load(request);
     
    function result(event:Event):void{
    	var str:String = event.currentTarget.data;
    	var a:Array = str.split("<a href="/go/getflash">Download Flash Player ");
    	if(a.length){
    		a = a[1].split(" now</a>");
    		var version:Number = new Number(a[0]);
    		if(version){
    			trace("az elérhető legfrissebb flash player verziószáma: " + version);
    		}else{
    			trace("nem sikerült kinyerni a verziószámot :(");
    		}
    	}else{
    		trace("nem sikerült kinyerni a verziószámot :(");
    	}
    }
    1 év íródott # Válasz erre
  9. Suszi
    offline
    Tag

    Azt nem tudjátok véletlenül, hogy flashben le lehet e kérni valahogy a hivatalos legfrissebb flash player verzió számot? Tehát nem arra vagyok kíváncsi, ami nekem telepítve van, hanem amit kiadtak, hogy mi az utolsó.
    Már mindenhol néztem, ami eszembe jutott, de nem találtam meg, lehet nincs is.

    1 év íródott # Válasz erre
  10. szbzs
    offline
    Moderátor

    re: Ted
    ez az Arthur Debert ( http://www.stimuli.com.br/trane/tags/bulk-loader/ ) "féle" BulkLoader ( http://code.google.com/p/bulk-loader/ )?

    annak van levelező listája, stb., ott már nézted, vagy nem?

    bocsánat, ha túl kézenfekvő dolgot írtam, de sokszor nem látja az ember a fától az erdőt, legalábbis velem gyakran megtörténik,

    1 év íródott # Válasz erre
  11. szbzs
    offline
    Moderátor

    re: Genin
    lehet, hogy nem pontosan fogalmaztam - jobb lett volna az "ennyi trigonometrikus" helyett "annyi trigonometrikus"-t írni -, de nem azt írtam, hogy nem "kell" trigonometrikus kifejezéseket (szögfüggvényeket) használni;

    az látttam/látom, hogy az adott pont körüli elforgatás képletét használjátok, ami valamilyen módon tetszik is, hiszen "nem foglalkozik" azzal, hogy körről van szó (hogy egy kört közelítünk), de pont emiatt nem tetszik, mert a "speciális" eset (kör adott pontjának a meghatározása adott szög "mellett") egy ismertebb képlettel számolható, mindegy is...

    viszont a "a te példáidban a két szélső esetnél nem működik túl jól a felosztás, hiszen nagyon kicsi körnél szögletes lesz, nagyon nagynál pedig túl részletes. am szerintem nem éri meg bajlódni vele, nem nyersz annyit ;)" megjegyzésedet nem értem;

    lehet, hogy nem voltam egyértelmű, de pont arra akartam utalni, hogy én anno a sugár értékét is figyelembe véve határoztam meg a lépésszámot (hiszen a húrok hosszát stb. vettem figyelembe), de lássuk a kódokat (az eredeti tortaszelethez):

    function torta1(s:Sprite, cx:Number, cy:Number, r:Number, a1:Number, a2:Number, h:Number = 5) {
      a1 *= Math.PI / 180;
      a2 *= Math.PI / 180;
      var n:Number = Math.floor(1 + r * (a2 - a1) / h); // húrhossz alapján számolás
      s.graphics.moveTo(cx, cy);
      for (var i:int = 0; i <= n; ++i) {
        var a:Number = a1 + (a2 - a1) * i / n;
        var nx:Number = cx + r * Math.cos(a);
        var ny:Number = cy - r * Math.sin(a);
        s.graphics.lineTo(nx, ny);
      }
      s.graphics.lineTo(cx, cy);
    }
     
    function torta2(s:Sprite, cx:Number, cy:Number, r:Number, a1:Number, a2:Number, d:Number = 1) {
      a1 *= Math.PI / 180;
      a2 *= Math.PI / 180;
      var n:Number = Math.floor(1 + (a2 - a1) / (2 * Math.acos(1 - d / r))); // húrtávolság alapján
      s.graphics.moveTo(cx, cy);
      for (var i:int = 0; i <= n; ++i) {
        var a:Number = a1 + (a2 - a1) * i / n;
        var nx:Number = cx + r * Math.cos(a);
        var ny:Number = cy - r * Math.sin(a);
        s.graphics.lineTo(nx, ny);
      }
      s.graphics.lineTo(cx, cy);
    }

    mondjuk én eleve abból indultam ki, hogy a szelet nem feltétlenül 0 foknál indul (ezért van hozzá két paraméter: "a1" és "a2") és hagyományos sodrási irányt veszem (ezért "tükrözöm" az "ny" értékeket),

    az is igaz, hogy a torta1-nél valójában nem a húrhosszból indulok ki, hanem a körív hosszából,

    továbbá ezek csak "vázlatok", semmilyen ellenőrzés nincs az aktuális paraméterekre (h aktuális értéke <= 0, vagy esetleg nagyobb, mint a sugár, stb.)

    az is igaz, hogy ha animálni kell, akkor lehet, hogy célszerű a közelítés pontjait olyan képlettel számolni, hogy fixen maradjanak, ellenben zavaró lehet a körvonal "zizegése", ha nem elég nagy a felosztás,

    továbbá nyilván benne van a függvényeimben az a hiba is, hogy "lokálisan" számol (tfh. egy tortaszeletet a torta1 hívásával rajzoltatok ki h=5 értékkel, ha az adott Sprite-ot 10-szeresére nagyítom, akkor az megfelel annak, mintha h=50 értékkel közelítettem volna, aminél már szinte biztos, hogy látszik a "közelítés"),

    bár ezt írtam: "nekem a fokonkénti léptetés sem tetszik", (amit olyan szempontból tartok is, hogy tetszőleges sugárra ugyanazt a felosztást vetted alapul, és ez szerintem nem jó, bár erre írtad "kitalálhatsz valami elvet, ami szerint dinamikusan változik") igazából más közelítési módokra szerettem volna felhívni a figyelmet,

    ps. az is lehet, hogy nem is jól számolok (még anno Flash MX(6) alatt követtem el a fenti kódokat, csak most átírtam őket AS3-ra, és most nem gondoltam teljesen végig a számolást)

    1 év íródott # Válasz erre
  12. Ted
    offline
    Tag

    Sziasztok!

    Másnak a kódjával kell dolgoznom és teljesen elakadtam. Van egy BulkLoader nevű osztályom, ami az EventDispatcher-ből származtatja magát és van egy privát(-tá változtatott) isPaused változója, ami boolean, alapból true.

    Van ezen kívül a mozim, ami betölt egy konfigurációs fájlt és az alapján még egy rakás továbbit, mozit, mindenfélét. Többek között egy json fájlt is be kéne tölteni, de nem megy. Van egy külön függvénye a mozi osztályának, ami ezt végezné. Elvileg külön létrehozza a BulkLoadert lokálisként, de a nyomkövetés kedvéért az osztály változójává tettem assetLoader néven. A betöltést végző függvény így néz ki:

            protected function _loadAssets() : void
            {
                var _loc_x:String = null;
                assetLoader.addEventListener(BulkProgressEvent.PROGRESS, _broadcastProgress, false, 0, true);
                assetLoader.addEventListener(Event.COMPLETE, _broadcastComplete, false, 0, true);
                assetLoader.logLevel = BulkLoader.LOG_ERRORS;
                if (_loaderContext == null)
                {
                    _loaderContext = new LoaderContext();
                }
                for (_loc_x in _configClass["assets"])
                {
                    assetLoader.add(_configClass["assets"][_loc_x], {id:_loc_x, loaderContext:_loaderContext});
                }
     
                assetLoader.start();
     
                return;
            }

    Na most az érdekesség az, hogy assetLoader.start(); után az isPaused értéke false lesz, de következő onEnterFrame-ben már true. Mint említettem, a változó privát, a BulkLoader összes függvényét trace-elem, ami hozzányúl az isPaused értékhez, de nem hívódik meg semmi. Van valakinek ötlete, hogy merre tovább?

    Előre is hálás köszönet már a végigolvasásért is!

    1 év íródott # Válasz erre
  13. galedi
    offline
    Tag

    Sziasztok!

    Segítséget szeretnék kérni: hang(mp3) lejátszás, localhost-on működik, ha viszont feltöltöm a tárhelyemre nem töltődik be az mp3. Mi lehet az oka? Előre is köszönöm.

    HttpFox hibaüzenet

    00:36:44.295 0.027 411 491 GET 404 text/html (NS_ERROR_FAILURE) http://www.galedi.hu/sound/SoundLoop.mp3

    1 év íródott # Válasz erre
  14. Genin
    offline
    Tag

    re: szbzs
    amit te írsz az is trigonometria, lényegében az elforgatási mátrixot írtad egy speciális esetre (amikor y = 0) persze abban igazad van, hogy ez a helyzet most is fenn áll, bevallom ilyen szempontból nem néztem most a kódot, csak kopiztam a ciklust, de akkor szépen :D

    function rotTorta(s:Sprite, u:Number, v:Number, r:Number, deg:Number){
    	s.graphics.moveTo(u, v);
    	s.graphics.lineTo(u+r, v);
    	for(var i:uint = 1; i < deg+1; i++){
    		var rad:Number = i * Math.PI / 180;
    		var px:Number = r * Math.cos(rad) + u;
    		var py:Number = r * Math.sin(rad) + v;
    		s.graphics.lineTo(px, py);
    	}
    	s.graphics.lineTo(u, v);
    }
     
    a fokonkénti léptetés lényegében a felbontása a szeletnek. ezt meghatározhatod fixre, vagy kitalálhatsz valami elvet, ami szerint dinamikusan változik. igazából ez már ízlés dolga (gyorsítani a kódot mindkét esetben tudom).
    a te példáidban a két szélső esetnél nem működik túl jól a felosztás, hiszen nagyon kicsi körnél szögletes lesz, nagyon nagynál pedig túl részletes. am szerintem nem éri meg bajlódni vele, nem nyersz annyit ;)
    1 év íródott # Válasz erre
  15. balta
    offline
    Tag

    re: szbzs

    ha van jobb/hatekonyabb modszered, ne tartogasd ! :)

    1 év íródott # Válasz erre
  16. balta
    offline
    Tag

    re: szbzs

    Elmeletileg egyetlen ivvel is meg lehet rajzolni de a multkori beszelgetesnel(en sem talaltam) kiderult, hogy az a modszer nem eleg pontos. Ez csak akkor latszodott igazan, amikor animaltuk a szelet novekedeset fokonkent.

    A modszer hatekonysagarol nem tudok nyilatkozni. Nyilvan valamivel hatekonyabb egy ivet szamolni es renderelni, mint egy for ciklusban tobbszor. Az biztos, hogy ez pontosabb.

    1 év íródott # Válasz erre
  17. szbzs
    offline
    Moderátor

    re: Genin
    valamit nem egészen értek (próbáltam rákeresni a "tortaszelet" kifejezésre, hátha a balta által utalt hozzászólásokat elolvasva "megvilágosodom", de nem leltem), szóval miért használtok ennyi trigonometrikus kifejezést a ciklus(ok)ban?

    miért nem a jól ismert: x = r * cos(a); y = r * sin(a); képleteket használjátok?

    vagyis azt használjátok, mert ugye-e a ciklusban:
    px - u == r; py - v == 0; stb.

    lehet, hogy a lejátszó optimalizál, de ami szerintem fontosabb: most feleslegesen(?) el van bonyolítva a kód, "olvashatatlanabb";

    mondjuk nekem a fokonkénti léptetés sem tetszik, de ez az én bajom (amikor hasonlót kódoltam, akkor nekem a következő lehetőségek jutottak eszembe, vagyis ezeket próbáltam ki: adott ívhosszú közelítés (azaz egy kívánt/adott maximális húrhosszból számoltam ki a szükséges lépések számát), a másik ötletem pedig az ideális (kör)ívtől vett húrtávolság alapján számolt (azt a minimális lépésszámot határoztam meg, amelynél a húrok távolsága az adott húrhoz tartozó körívtől egy adott értéknél kisebbnek adódott),

    szerkesztve: nem kötekedni akarok, de tényleg nem értem mi az oka a szerintem felesleges "bonyolításnak",

    1 év íródott # Válasz erre
  18. balta
    offline
    Tag

    re: Genin

    Koszi !

    A ket tortaszelet nekem is megvolt, de ha korvanalt is akarok, akkor nem az igazi. Az kulon jo, hogy meg ertem is mit csinaltam rosszul. Ezer hala!

    1 év íródott # Válasz erre
  19. Genin
    offline
    Tag

    re: balta
    a legegyszerűbb két torta szeletet egymásra rajzolni ;)
    de megoldható külön ring fv-el is:

    function ring(s:Sprite, u:Number, v:Number, rb:Number, rk:Number, deg:Number){
    	var sxb:Number = u+rb;
    	var syb:Number = v;
    	var sxk:Number = u+rk;
    	var syk:Number = v;
     
    	var rad:Number
    	var px:Number;
    	var py:Number;
    	var i:uint;
     
    	s.graphics.moveTo(sxb, syb);
    	s.graphics.lineTo(sxk, syk);
    	for(i = 1; i < deg+1; i++){
    		rad = i * Math.PI / 180;
    		px = (sxk - u) * Math.cos(rad) - (syk - v) * Math.sin(rad) + u;
    		py = (sxk - u) * Math.sin(rad) + (syk - v) * Math.cos(rad) + v;
    		s.graphics.lineTo(px, py);
    	}
    	rad = deg * Math.PI / 180;
    	px = (sxb - u) * Math.cos(rad) - (syb - v) * Math.sin(rad) + u;
    	py = (sxb - u) * Math.sin(rad) + (syb - v) * Math.cos(rad) + v;
    	s.graphics.lineTo(px, py);
    	for(i = deg-1; i > 0; i--){
    		rad = i * Math.PI / 180;
    		px = (sxb - u) * Math.cos(rad) - (syb - v) * Math.sin(rad) + u;
    		py = (sxb - u) * Math.sin(rad) + (syb - v) * Math.cos(rad) + v;
    		s.graphics.lineTo(px, py);
    	}
    }
     
    function torta(s:Sprite, u:Number, v:Number, r:Number, deg:Number){
    	var px:Number = u+r;
    	var py:Number = v;
    	s.graphics.moveTo(u, v);
    	s.graphics.lineTo(px, py);
    	for(var i:uint = 1; i < deg+1; i++){
    		var rad:Number = i * Math.PI / 180;
    		var px2:Number = (px - u) * Math.cos(rad) - (py - v) * Math.sin(rad) + u;
    		var py2:Number = (px - u) * Math.sin(rad) + (py - v) * Math.cos(rad) + v;
    		s.graphics.lineTo(px2, py2);
    	}
    	s.graphics.lineTo(u, v);
    }
     
    var sp:Sprite = new Sprite();
    sp.graphics.lineStyle(0,0x000000,0);
    sp.graphics.beginFill(0xFF0000,1);
    torta(sp, 100, 100, 100, 90);
    torta(sp, 100, 100, 80, 90);
    sp.graphics.endFill();
    sp.graphics.beginFill(0x00FF00,1);
    ring(sp, 300, 100, 80, 100, 90);
    sp.graphics.endFill();
    addChild(sp);
    1 év íródott # Válasz erre
  20. balta
    offline
    Tag

    Hello!

    A multkor dumaltunk itt a tortaszelet rajzolasrol. Vegul valaki belinkelt egy jo fuggvenyt, ezt szeretnem most ugy modositani, hogy gyurut is tudjak rajzolni. Mondanom sem kell, hogy nem igazan sikerul. :)

    Arra gondoltam hogy a kulso iv utan rajzolom meg a masik vonalat es a kissebbik ivet de ez nem igazan megy.

    Barmi otlet ?

    az eredeti fuggveny:

    function torta(s:Sprite, u:Number, v:Number, r:Number, deg:Number){
    	var px:Number = u+r;
    	var py:Number = v;
    	s.graphics.moveTo(u, v);
    	s.graphics.lineTo(px, py);
    	for(var i:uint = 1; i < deg+1; i++){
    		var rad:Number = i * Math.PI / 180;
    		var px2:Number = (px - u) * Math.cos(rad) - (py - v) * Math.sin(rad) + u;
    		var py2:Number = (px - u) * Math.sin(rad) + (py - v) * Math.cos(rad) + v;
    		s.graphics.lineTo(px2, py2);
    	}
    	s.graphics.lineTo(u, v);
    }
    1 év íródott # Válasz erre
  21. gabor66
    offline
    Tag

    Kösözönöm a segítséget Genin!

    1 év íródott # Válasz erre
  22. Genin
    offline
    Tag

    re: gabor66
    az értéket szépen ki is olvasod, és el is mented ennél a sornál:
    "imageHolder.link = imagelink[i];"

    azt nem értem, akkor miért nem arra hivatkozol? ;)

    így jó lesz:
    "navigateToURL(new URLRequest(e.target.link));"

    ps: persze átírhatod azt is, amikor elmented az értéket az mc-be linkTo-ra így: "imageHolder.linkTo = imagelink[i];"
    a lényeg, hogy ugyanarra hivatkozzál, mint amibe bemented az értéket, vagyis lehetne akár "ruhacsipesz" is, csak akkor mind a két helyre azt írjad ;)

    1 év íródott # Válasz erre
  23. gabor66
    offline
    Tag

    re: vizoli

    Köszönöm, ezt én is észrevettem. A kérdésem az lenne, hogyan tudom módosítani az itemClicked függvényt illetve a teljes kódot, hogy ki tudjam olvasni az XML-ben lévő <ilink> értékét?

    1 év íródott # Válasz erre
  24. vizoli
    offline
    Moderátor

    re: gabor66
    Ott kezdodnek a bajok, hogy nincs linkTo tulajdonsaga az e.target-nek..oszinten szolva sehol mashol nincs senkinek se :)

    1 év íródott # Válasz erre
  25. gabor66
    offline
    Tag

    Sziasztok!

    Elakadtam AS3-ban. Találtam a neten egy remek XML menüt. Minden remekül működik, csak nem hajlandó az ItemClicked-nél ugrani, próbáltam átírni nem de nem sikerült, igazából elég lenne, ha csak kitudnám olvasni a clicked eseménynél az aktuális menühöz tartozó <ilink> értékét.

    Előre is köszönöm.

    gabor66

    Itt található az AS3 kód:

    //We use 70x70 sized images (change this if different for your images)
    const IMAGE_WIDTH:uint = 70;
    const IMAGE_HEIGHT:uint = 70;
     
    var imgurl:URLRequest = new URLRequest();
    var loadedimgs:uint = 0;
    var images_num = 0;
    var imageHolders:Array = new Array();
     
    var menu_num:String = "";
     
    //Set the focal length
    var focalLength:Number = 500;
     
    //Set the vanishing point
    var vanishingPointX:Number = stage.stageWidth / 2;
    var vanishingPointY:Number = stage.stageHeight / 4;
     
    //The 3D floor for the images
    var floor:Number = 100;
     
    //We calculate the angleSpeed in the ENTER_FRAME listener
    var angleSpeed:Number = 0;
     
    //Radius of the circle
    var radius:Number = 250;
     
    var xmlLoader:URLLoader = new URLLoader();
    var xmlData:XML = new XML();
     
    xmlLoader.load(new URLRequest("carousel.xml"));
    xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
     
    function LoadXML(e:Event):void
    {
    	xmlData = new XML(e.target.data);
    	//trace(xmlData);
    	Parseimage(xmlData);
    }
     
    function Parseimage(imageinput:XML):void
    {
    	var imageurl:XMLList = imageinput.image.iurl;
    	var imagelink:XMLList = imageinput.image.ilink;
     
    	images_num = imageurl.length();
    	for (var i:int = 0; i < images_num; i++)
    	{
    		var urlElement:XML = imageurl[i];
    		var linkElement:XML = imagelink[i];
    		var imageHolder:MovieClip = new MovieClip();
    		var imageLoader = new Loader();
    		imageHolder.addChild(imageLoader);
    		imageHolder.mouseChildren = false;
    		imageLoader.x = - (IMAGE_WIDTH / 2);
    		imageLoader.y = - (IMAGE_HEIGHT / 2);
    		imageHolder.link = imagelink[i];
    		imageHolders.push(imageHolder);
    		imgurl.url = imageurl[i];
    		imageLoader.load(imgurl);
    		imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
    	}
    }
     
    function imageLoaded(e:Event):void
    {
    	//Update the number of loaded images
    	loadedimgs++;
    	//trace("loadedimgs: " + loadedimgs);
    	//Set the bitmap smoothing to true for the image (we know that the loader's content is a bitmap).
    	e.target.content.smoothing = true;
    	//Check to see if this is the last image loaded
    	if (loadedimgs == images_num)
    	{
    		//trace("done");
    		//Set up the carousel
    		initializeCarousel();
    	}
    }
     
    //This function is called when all the images have been loaded.
    //Now we are ready to create the 3D carousel.
    function initializeCarousel():void
    {
    	//Calculate the angle difference between the images (in radians)
    	var angleDifference:Number = Math.PI * (360 / images_num) / 180;
    	//Loop through the images
    	for (var i:uint = 0; i < imageHolders.length; i++)
    	{
    		//Assign the imageHolder to a local variable
    		var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);
    		//Get the angle for the image (we space the images evenly)
    		var startingAngle:Number = angleDifference * i;
    		//Position the imageHolder
    		imageHolder.xpos3D = radius * Math.cos(startingAngle);
    		imageHolder.zpos3D = radius * Math.sin(startingAngle);
    		imageHolder.ypos3D = floor;
    		//Set a "currentAngle" attribute for the imageHolder
    		imageHolder.currentAngle = startingAngle;
    		//Calculate the scale ratio for the imageHolder (the further the image -> the smaller the scale)
    		var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);
    		//Scale the imageHolder according to the scale ratio
    		imageHolder.scaleX = imageHolder.scaleY = scaleRatio;
    		//Set the alpha for the imageHolder
    		imageHolder.alpha = 0.3;
    		//We want to know when the mouse is over and out of the imageHolder
    		imageHolder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverImage);
    		imageHolder.addEventListener(MouseEvent.MOUSE_OUT, mouseOutImage);
    		//We also want to listen for the clicks;
    		imageHolder.addEventListener(MouseEvent.CLICK, imageClicked);
    		//Position the imageHolder to the stage (from 3D to 2D coordinates);
    		imageHolder.x = vanishingPointX + imageHolder.xpos3D * scaleRatio;
    		imageHolder.y = vanishingPointY + imageHolder.ypos3D * scaleRatio;
    		//Add the imageHolder to the stage
    		addChild(imageHolder);
    	}
    	//Add an ENTER_FRAME for the rotation
    	addEventListener(Event.ENTER_FRAME, rotateCarousel);
    }
     
    function rotateCarousel(e:Event):void
    {
    	//Calculate the angleSpeed according to mouse position
    	angleSpeed = (mouseX - vanishingPointX) / 4096;
    	//Loop through the images
    	for (var i:uint = 0; i < imageHolders.length; i++)
    	{
    		//Assign the imageHolder to a local variable
    		var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);
    		//Update the imageHolder's current angle
    		imageHolder.currentAngle +=  angleSpeed;
    		//Set a new 3D position for the imageHolder
    		imageHolder.xpos3D = radius * Math.cos(imageHolder.currentAngle);
    		imageHolder.zpos3D = radius * Math.sin(imageHolder.currentAngle);
    		//Calculate a scale ratio
    		var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);
    		//Scale the imageHolder according to the scale ratio
    		imageHolder.scaleX = imageHolder.scaleY = scaleRatio;
    		//Update the imageHolder's coordinates
    		imageHolder.x = vanishingPointX + imageHolder.xpos3D * scaleRatio;
    		imageHolder.y = vanishingPointY + imageHolder.ypos3D * scaleRatio;
    	}
    	//Call the function that sorts the images so they overlap each others correctly
    	sortZ();
    }
     
    //This function sorts the images so they overlap each others correctly
    function sortZ():void
    {
    	//Sort the array so that the image which has the highest
    	//z position (= furthest away) is first in the array
    	imageHolders.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
    	//Set new child indexes for the images;
    	for (var i:uint = 0; i < imageHolders.length; i++)
    	{
    		setChildIndex(imageHolders[i], i);
    	}
    }
     
    //This function is called when the mouse is over an imageHolder
    function mouseOverImage(e:Event):void
    {
    	//Set alpha to 1
    	e.target.alpha = 1;
    }
    //This function is called when the mouse is out of an imageHolder
    function mouseOutImage(e:Event):void
    {
    	//Set alpha to 0.3
    	e.target.alpha = 0.3;
    }
    //This function is called when an imageHolder is clicked
    function imageClicked(e:Event):void
    {
    	////Navigate to the URL that is in the "linkTo" variable
    	navigateToURL(new URLRequest(e.target.linkTo));
    }

    Az XML file tartalma:

    <?xml version="1.0" encoding="iso-8859-1"?>
    <carousel>
    <image>
    <iurl>programok.png</iurl>
    <ilink>1</ilink>
    </image>

    <image>
    <iurl>itallap.png</iurl>
    <ilink>2</ilink>
    </image>

    <image>
    <iurl>galeria.png</iurl>
    <ilink>3</ilink>
    </image>

    <image>
    <iurl>djk.png</iurl>
    <ilink>4</ilink>
    </image>

    </carousel>

    1 év íródott # Válasz erre

A téma RSS kivonata

« Előző1234…24Következő »

Téma lezárva

Zárolt topik, további üzenetek írása nem lehetséges.



Copyright © 2001-4ever: Swf.hu 2.0 – flash és webfejlesztés beta - Minden jog fenntartva. Powered by WordPress , BBpress