Archiv ‘Flash všeobecně’ kategorie

PayPal a Flash

Středa, Únor 11th, 2009

Nedávno mne jeden ze zákazníků požádal o vložení "Add to Cart" tlačítka do flashové prezentace, které by umělo vložit libovolnou položku do košíku v rámci systému PayPal. Řešení je velice jednoduché, potřebujeme k tomu pouze zdrojový kód tlačítka, který získáme na svém PayPal účtě:

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2988810">
<table>
<tr><td><input type="hidden" name="on0" value="Specify Your Requirement">Specify Your Requirement</td></tr><tr><td><select name="os0">
    <option value="Set Up & Year 1">Set Up & Year 1 $290.00
    <option value="Year 2">Year 2 $250.00
    <option value="Changes to template">Changes to template $25.00
    <option value="Add additional user to Group">Add additional user to Group $45.00
</select> </td></tr>
</table>
<input type="hidden" name="currency_code" value="CAD">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_cart_SM.gif" border="0" name="submit" alt="">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Ve flashi pak stačí využít LoadVars třídu a jako atributy objektu uvedeme veškeré "name" atributy z poskytnutého kódu. Výsledek pak už jen odešleme jako POST na PayPal:

var PayPal:LoadVars = new LoadVars();
PayPal.add = 1;
PayPal.cmd = "_s-xclick";
PayPal.on0 = "Specify Your Requirement";
PayPal.os0 = "Year 2";
PayPal.currency_code = "CAD";
PayPal.hosted_button_id = "2988810";
PayPal.send("https://www.paypal.com/cgi-bin/webscr","nove_okno","POST");

Očištění HTML textu

Sobota, Leden 31st, 2009

Při načítání externích dat se občas vyskytne potřeba "očistit" předané texty od HTML tagů a získat tak pouze samotný text, bez jakéhokoliv HTML formátování. V případě XML dat pak navíc můžeme řešit problém s nadbytečnými konci řádků, které oddělují odstavce. Jako užitečná se pak jeví následující třída, která zajistí veškeré odstranění přebytečných tagů a konců řádků:

package
{
    public class HtmlStrip
    {
        private static var removeHTML:RegExp = new RegExp("&lt;[^&gt;]*&gt;", "gi");
        //odstranění HTML tagů
        public static function stripHTMLTags(src:String):String{
            return stripMe(src);
        }
        //odstranění konců řádků
        public static function removeNewLines(src:String):String{
            return removeLines(src);
        }
        //odstranění tagů a konců řádků
        public static function clearMyString(str:String):String{
            var pomStr:String = stripMe(str);
            return removeLines(pomStr);
        }
        //odstranění HTML tagů
        private static function stripMe(src:String):String{
            return src.replace(removeHTML, "");
        }
        //odstranění nových řádků
        private static function removeLines(src:String):String{
            return replaceString(src,"\n","");
        }
        //nahrazení textu
        private static function replaceString(src:String, text_what:String, text_for:String):String {
            return src.split(text_what).join(text_for);
        }
    }
}

Použití je pak velice jednoduché, pro odstranění HTML tagů a konců řádků se použije zápis:

var novyText:String = HtmlStrip.clearMyString(textHTML);

Charles

Úterý, Leden 27th, 2009

Výbornými pomocníky jsou proxy debuggery, kteří umožňují sledovat komunikaci mezi klientem a internetem.  Z vlastních zkušeností mohu vřele doporučit program Charles, který nabízí přehledný souhrn veškeré komunikace, kterou potřebujeme sledovat.

Po jeho spuštění získáme detailní přehled o tom, co se děje během našeho brouzdání po webu, které skripty jsou spouštěny, včetně parametrů a proměnných, které odesílají a stejně tak máme detailní přístup k odpovědím, ze strany serverů.

Výborným pomocníkem je Charles i v případě lazení skriptů, kdy potřebujeme jistit, co naše aplikace desílají za data a stejně tak potřebujeme mít detailní přehled o tom, jak server odpoví. Například při programování flexové aplikace, kde využíváme Flex/Flash remoting se nám bude Charles určitě hodit. Máme možnost vidět objektovou strukturu jak dotazů, tak odpovědí.

A když už práce omrzí, na youtube si najdeme oblíbené video, přehrajeme a díky Charlesovi si můžeme zjistit jeho přímou adresu a stáhnout si jej.

FLV videa na iDNES - ostuda, bohužel

Neděle, Leden 25th, 2009

Zpravodajský portál iDnes už od počátku zveřejňuje videa ve WMV formátu, což s sebou pro běžné užvatele nese různá úskalí (mě osobně se jejich "vychytaný" player objevuje až po několikerém kliknutí do "černé díry" v okně, a to nemám nijak restriktivně nastavený prohlížeč) .

O to více mne překvapilo, když jsem v sekci "Hobby" naleznul Flexový přehrávač pro flashová videa. Že by se konečně ledy pohnuly a i ten "nejdůvěryhodnější" portál přešel na jednoznačně lepší řešení videí, než měl dosud? Obávám se, že to asi tak jednoduché nebude, ale kdoví... Je ale škoda, že ani ten nový přehrávač nefuguje na 100%. Asi po minutě čekání na reklamu jsem se videa o příšerkách nedočkal :( Podobná situace se opakuje i u dalších videí, škoda. Je to mrzuté, protože takhle ostudně zpackané streamované video(teoreticky by to mělo ject přes rtmp) těžko přidá na prestiži flashe.

A ještě jedna poznámka k iDNESu. Poslední dobou mě vyskakuje error okno debug verze flashplayeru, což by samo o sobě nebylo neobvyklé, chyby se tu a tam objeví, ale zajímalo mě, o co se jedná. Po stažení 66kB flexového souboru a jeho dekompilaci jsem zjistil, že jediné, co tento soubor dělá, je volání JS funkce v HTML stránce (které mimochodem vyvolává zmíněnou chybu). Celkem zajímavé řešení, 66kB na jeden příkaz mi přijde jako docela velké plýtvání, ale možná se mýlím a má to nějaký hlubší význam...

Ultimativní, sofistikované, revoluční, unikátní…

Úterý, Leden 20th, 2009

Schválně jsem použil takto výrazná slova, protože když se podívám na některé informace o "nových" MS technologiích, tak tam se podobnými výrazy nešetří a přitom je realita často jiná...

Ale k věci. Adobe už nějaký ten pátek umožňuje testování Stratus a Cocomo projektů. Konečně jsem našel trochu času, abych zmíněné věci pořádně otestoval a musím říct, že se máme na co těšit.

Stratus - umožňuje P2P komunikaci mezi klienty flashplayeru, výborná věc, pokud potřebujete vytvořit aplikaci jeden-na-jednoho. Lze přenášet video, zvuk, libovolná data(včetně ByteArray). Na sestavení spojení je nutný server(stratus služba poskytuje hostovaný server adobe), pak už vše běží jenom mezi klienty.

Cocomo - spolu se základní sadou komponent pro Flex Builder se vytvoří komunitní aplikace během několika málo minut. Ideální použití pro chaty, videokonference, zkrátka jakoukoliv online spolupráci ve skupině.

Více neprozradím, sledujte Flash.cz, za chvilku tam bude zajímavý(doufám) článek.

Microsoft má stále Flash rád

Sobota, Leden 17th, 2009

Kdo se jen trochu zajímá o dění kolem flashových technologií, zajisté ví, že Microsoft (MS) má svého konkurenta v podobě SIlverlightu (SL).

Je naprosto zřejmé, že SL nepřináší žádná vylepšení, která by jednoznačně vedla k odklonu od Flashe(Flex Builderu).  Kdo používá MS nástroje, tomu bude bližší SL, ostatním mnohem lépe poslouží vývoj ve Flex Builderu. Bohužel je u nás marketingově silnější MS a tak všude kolem sebe slyšíme, jak je SL lepší a bůhví co ještě.

Musím se pokaždé pousmát, nad nějakou další skvělou novinkou v SL, kterou přitom ve Flashi(Flex Builderu) už dávno bereme jako samozřejmost. No a když je ten SL tak skvělý, proč jej MS nevyužívá i ve svých projektech? Proč po olympiádě společnosti, které s velkou slávou přenášeli video pomocí SL, opět přešli na flashovou platformu? Vypadá to na dalších několik let flamewaru Silverlight vs Flash(Flex), přičemž SL je zde v pozici toho, kdo se snaží prezentovat dávno funkční věci (ve flashi) za své naprosto skvělé a unikátní novinky :)

K tomuhle zamyšlení mě inspiroval následující článek: http://www.flashcomguru.com/index.cfm/2009/1/16/msnbc-new-video-player

Spuštění JavaScriptu v ActionScriptu

Úterý, Leden 13th, 2009

Na Flash.cz jsem už dříve psal o možnosti volání JS funkcí pomocí ActionScriptu. Pomocí ExternalInterface třídy ale můžeme JS funkce sestavit přímo v ActionScriptu a spustit je bez jejich vypsání v HTML kódu stránky. Taková funkce pak vypadá třeba takto:

private function setHTMLTitle():void {
ExternalInterface.call("function(){document.title='"+ti.text+"'}");
}

A umožňuje přímo měnit titulek stránky:

Na první pohled se tak odkrývají značné možnosti při manipulaci se stránkou, ovšem jen vybrané vlastnosti a funkce fungují.  Testováním vlastností: https://developer.mozilla.org/en/DOM/document zjistíme, že máme přístup jen k několika vybraným (zmíněný titulek, zjištění URL stránky, nastavení status titulku...). Ono je to dobře, protože pak by se z obyčejných flashových bannerů mohly stát nebezpeční útočníci.

Video: chceme lepší AS editor ve Flashi

Sobota, Leden 10th, 2009

Video, které pěkně vystihuje volání po lepším ActionScript editoru ve Flashi. Jasně, že někdo namítne používat Flex Builder, ale proč využívat dva nástroje, když by mohl stačit jeden? Navíc celá řada uživatelů, kteří nejsou "hardcore" programátoři, Flex nepotřebují, ale ActionScript 3.0 by se jim určitě hodil, ale s editorem, který je ve Flashi to hned tak nebude.

Obrázky v textu

Čtvrtek, Leden 8th, 2009

Zobrazování více obrázků v jednom řádku je ve Flashi dost problém, ale s novým flashplayerem 10 a především třídám z balíku flash.text.engine je to zase o něco "snazší". Slovo snazší je v uvozovkách, protože to není tak snadné jako dva IMG tagy vedle sebe v rámci HTML, ale díky třídám TextLine, GraphicElement a TextElement máme možnost pracovat s textem na nejnižší úrovni. Objekty GraphicElement a TextElement pak lze libovolně kombinovat do textového řádku a to je to, co potřebujeme.

(more...)