php:
$v=array();
$v['foo']='bar';
return json_encode($v);
as – on complete:
if(ExternalInterface.available) {
var encoded:Object=ExternalInterface.call('eval','('+URLLoader(e.currentTarget).data+')')
}
the shortnest php to flash via json
05/12/2009 - autor: riasolxml parsing error trapping in libxml
11/11/2009 - autor: riasolzmodyfikowany przykład z dokumentacji php. Oryginalny kod na windows nie pokazywał w której linii/kolumnie jest błąd – problem z końcami linii
public function validateXml($inStr){
libxml_use_internal_errors(true);
$inStr=preg_replace("/\r/","\n",$inStr);
$doc = simplexml_load_string($inStr);
$xml = split("\n", $inStr);
$ret=false;
if (!$doc) {
$ret='';
$errors = libxml_get_errors();
foreach ($errors as $error) {
$ret.= $this->formatXmlError($error, $xml);
}
libxml_clear_errors();
}
return $ret;
}
private function formatXmlError($error, $xml)
{
$return = $xml[$error->line - 1] . "\n";
$return .= str_repeat('-', $error->column) . "^\n";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$return .= “Warning, code $error->code: “;
break;
case LIBXML_ERR_ERROR:
$return .= “Error, code $error->code: “;
break;
case LIBXML_ERR_FATAL:
$return .= “Fatal Error, code $error->code: “;
break;
}
$return .= trim($error->message) .
“\n Line: $error->line” .
“\n Column: $error->column”;
if ($error->file) {
$return .= “\n File: $error->file”;
}
return “$return\n”.str_repeat(‘.’, 40).”\n\n”;
}
explorer 8 stage.stageHeight fix
21/10/2009 - autor: riasol
package flashprolib.fix {
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
/**
* Poprawka bedu występującego w iexpore 8: stage.stageWidth ( stage.stageHeight ) ma wartość 0
* przy korzystaniu z swf zapisanego w cache
*/
public class IEStage extends Sprite {
private var handle:Function
private var tmr:Timer;
/**
* @param container DisplayObjectContainer do którego dołączony zostanie fix
* @param method Function metoda która zostanie wywołana po zaistnieniu wartości stageWidth>0
* Using:
* var fix:IEStage=new IEStage(this,startDisplayObejcts)
*/
function IEStage(container:DisplayObjectContainer, method:Function) {
handle=method
container.addChild(this)
tmr=new Timer(20)
tmr.addEventListener(TimerEvent.TIMER, testStageSize)
tmr.start()
testStageSize()//wywołanie, które zadziała dla browser != ie8, żeby nie było opóźnień
}
private function testStageSize(e:TimerEvent=null):void {
if(stage.stageWidth > 0 && stage.stageHeight > 0) {
tmr.removeEventListener(TimerEvent.TIMER, testStageSize)
handle.apply(parent)
parent.removeChild(this)
}
}
}
}
locale, mxmlc, ant
18/10/2009 - autor: riasolKroki niezbędne do kompilacji projektu
- We FLEX_SDK_HOME/bin: copylocale.exe en_US pl_PL
- Zakładając standardowy projekt flexbuildera, *.properties w katalogu src/locale/pl_PL. Parametry mxmlx -source-path+=${workspace}/${ant.project.name}/src/locale/{locale} -locale pl_PL lub -locale=en_US,pl_PL
configuration variable ‘target-player’ must only be set once
24/07/2009 - autor: riasolFrustrujący komunikat flexbuildera. Powodem był forma zapisu opcji w .actionScriptProperties
winno być -target-player=10 zamiast -target-player 10 .
flex componets lifecycle- niezwykłości
02/07/2009 - autor: riasolremoved before created ;)
container generuje zdarzenia Event.REMOVED_FROM_STAGE w trakcie tworzenia, prawdopodobnie przy sprawdzaniu scrollbars. Tak więc nie wolno w mxml ustawić chandlerów creationComplete i removedFromStage gdyż drugi wywoła się wcześniej, można np. w as w chandlerze creationComplete dodać manualnie obsługę Event.REMOVED_FROM_STAGE
ref: http://jonathanbranam.net/book/export/html/1
Ogólne rozwiązanie może wynikać z przypadków uzycia obsługi _REMOVED_FROM_STAGE – zazwyczaj to czyszczenie pmięcie przy usuwaniu elementu z widzianych elementów. Można więc zastosowac algorytm, że przed prawdziwym usunięciem ustawia się z zewnątrz flage i tylko wówczas w ciele metody obsługi zdarzenia wykona się blok kodu. Dla ModuleLoader bedzie to taki pseudokod:
//loader jest instancją ModuleLoader, BaseModule to klasa rozszerzająca Module
if(loader.child is BaseModule){
BaseModule(loader.child).unloading=true
}
//w obsłudze REMOVED_FROM_STAGE w klasie rozszerzającej BaseModule
if(unloading){//wykonaj blok
}
użycie swf z flash ide w actionscript – uwagi
02/07/2009 - autor: riasol- Podwójna instancja obiektu na timeline w jedenej klatce może spowodować że w kolejnej klatce nie można uzyskać odniesienia do obiektu o takiej samej nazwie.
flasplayer10 3d
09/06/2009 - autor: riasolModel 3d w fp
punkt zanikania jest ustawiany raz – przy starcie, przy zmianach rozmiaru filmu trzeba go ekstra ustawiać
root.transform.perspectiveProjection.projectionCenter=new Point(stage.stageWidth/2,stage.stageHeight/2);
flexbuilder3 kompiluje przy użyciu flex sdk4.0 beta
flash player debugger na ubuntu
02/06/2009 - autor: riasolDla testu postanowiłem zainstalować flashplayer na ubuntu. Nie znalazłszy pakietu pobrałem archimum z adobe i skopiowałem bibliotekę *.so do /usr/lib/flashplayer-installer
ExternalInterface – tworzenie javascript w actionscript
23/05/2009 - autor: riasolMożna więcej w actionscript. Zamiast pisać równolegele w javascript możliwe jest stworzenie kodu js z wnętrza swf. np.
if(ExternalInterface.available) {
ExternalInterface.call('document.insertScript=function(){window._getTitle=function(){' +
'return document.title;' +
'};}')
}
Najważniejsze jest wywołanie ..document.insertScript… – jest to używcie metody, która tworzy nową metodę w DOM oszadzającego dokumentu. Sprawdzone we flex
