ActionScript 3 Jak ukončit tuto funkci? – Flash – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ActionScript 3 Jak ukončit tuto funkci? – Flash – Fórum – Programujte.comActionScript 3 Jak ukončit tuto funkci? – Flash – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1602 příspěvků
18. 11. 2019   #1
-
0
-

Zdravím, potřeboval jsem animaci sněžení v Adobe animate CC a našel jsem tento script:


addEventListener (Event.ENTER_FRAME,snow);

function snow (event:Event):void {


   
    var scale:Number=Math.random()*.9;

    var _sf:snowflake=new snowflake();

    _sf.x=Math.random()*1920;

    _sf.scaleX=scale;

    _sf.scaleY=scale;

    var speed:Number=Math.random()*8;

    var RA:Array=new Array(-1,1);

    var lf:int=RA[Math.round(Math.random())];



    stage.addChild (_sf);

    _sf.addEventListener (Event.ENTER_FRAME,snowfall);


   

    function snowfall (event:Event):void {


       
        _sf.y+=speed;

        _sf.rotation+=Math.random()*12;

        _sf.x+=(Math.random()*2)*lf;

    }

}

Jenže autor nikde neuvedl jak jde ukončit.

Zkusil jsem: Objektové programování mi nikdy moc nešlo, jestli to chápu správně tak ta funkce vytváří neustále další děti(vločky). Jenže já bych potřeboval aby ty vločky pak zmizely. Jediné co jsem dokázal dohledat a upravit bylo ukončení funkce


this.removeEventListener(Event.ENTER_FRAME, snow);

To ale můj problém neřeší úplně protože to trvá cca 30 vteřin než se domihotají bych potřeboval, aby zmizely daleko rychleji, v řádu 2 vteřin dá se toho nějak docílit, prosím? Děkuji

Nahlásit jako SPAM
IP: 83.240.42.–
gna
~ Anonymní uživatel
1891 příspěvků
18. 11. 2019   #2
-
0
-

Konkrétně kam co napsat ti neporadím, protože to nevím. Ale jestli si s tím chceš hrát, tak v principu třeba takhle:

Nejdřív musíš ty vločky najít. To můžeš udělat projitím všech childů stage a otestováním, jestli daný child je vločka (operátor is; is snowflake). Lepší by bylo rovnou při vytváření je vkládat do nějakého kontejneru/kolekce, ať je nemusíš hledat. Pak tedy s těmi vločkami můžeš operovat.

A to, aby ti během dvou sekund dosnežilo můžeš udělat třeba tak, že vygeneruješ čas "teď + náhodná hodnota v intervalu 2s", po kterém se vločka killne. Nevím, jestli na to AS má nějakou standardní funkci, nebo vlastnost objektů, ale určitě si takovou vlastnost můžeš definovat sám. A pak ta vločka třeba ve frame handleru může hlídat, jestli už přišel její čas a pokud ano, tak se sama stopne a odstraní ze stage.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
19. 11. 2019   #3
-
0
-

#2 gna
a co třeba použít nějakou proměnou např, sf_active a ve snowfall dát podmínku, bud zvětšit speed na rychlé dosněžení nebo na remove ze stage?

Řekl bych že by se případně mohlo udělat i postupné řídnutí nebo zhuštění.

Jinak má to vůbec ještě cenu v dnešní době ukončování podpory Flashe něco začínat upravovat přidávat?

Pokud to má být pro web doporučuji přejít na novější technologie HTML5+webGL.

Nahlásit jako SPAM
IP: 91.139.9.–
Martin
~ Anonymní uživatel
1602 příspěvků
19. 11. 2019   #4
-
0
-

Díky moc za nápady. Netušil jsem kde právě stoprocentně kde hledat ty vlastnosti vloček. Nakonec jsem to díky vám vyřešil tak že jsem do funkce snowfall, přidal proměnou s vlastností visibility a tu pak v požadovanou chvíli ukončil, není to nejčistší řešení, ale jedno z nejjednoduších co mě napadlo ;)

Nahlásit jako SPAM
IP: 83.240.42.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 11. 2019   #5
-
0
-

#3 MilanL
Já jsem to myslel tak, že by se postupně vytratily, takže by každá vločka měla vlastní kill-time v rozmezí těch v 2s.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
19. 11. 2019   #6
-
0
-

#5 gna
já kdysi řešil něco podobného v excelovém formuláři pro formátování tabulky části, kde si člověk mohl pro tu část tabulky nastavit vlastnosti vlastního formátování stylem dragdrop, potřeboval jsem dynamicky přidávat nastavovat a ubírat prvky formuláře, tak abych ty prvky nemusel hledat procházením formulářových komponent jsem si na ně udělal pomocné pole, takže jsem prvek přidal jak do formu tak do pomocného pole a když jsem potřeboval upraovat nebo odstranit stačilo pracovat s tím pomocným polem a tím se to měnilo/odstranovalo i u formuláře.

Nahlásit jako SPAM
IP: 185.112.167.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Nelze ukoncit funkci — založil TuTi_fruTi

Vlákna, jak je ukončit — založil Kartmen

Jak ukončit if bez returnu — založil Draffix

[Java6]Jak ukoncit thread? — založil shadius

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý