Wypowiedzi
-
Dodaj: http://help.adobe.com/en_US/FlashPlatform/reference/ac...Robert Bąk edytował(a) ten post dnia 30.11.11 o godzinie 21:23
-
-
-
Blogged: Using constants in Flex CSS - with compile time error checking - bit.ly/u2h2Mo- 31.10.2011, 22:52
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Business IT
-
For people who need help with creating regular expressions for Flex/AS - check out http://t.co/MGqzTfd by @gskinner- 7.09.2011, 10:43
-
RT @ryanstewart: A huge, huge deal. AIR 3 release candidate, with native extensions now available. Info here - http://t.co/okbObLu- 6.09.2011, 23:02
-
-
Problem jest taki, że dużo fabrycznych skórek do komponentów Spark ma powpisywane na sztywno wartości i nie da się ich zmienić. Pozostaje zrobienie własnych skórek - na szczęście można bazować na oryginalnych. Po kolei (moja wersja SDK 4.5.1):
1) Znajdź w SDK folder
frameworks\projects\spark\src\spark\skins\spark\mediaClasses\normal
albo
frameworks\projects\spark\src\spark\skins\spark\mediaClasses\fullscreen
2) Potrzebujesz dwóch plików - MuteButtonSkin.mxml i VolumeBarSkin.mxml, wrzuć je gdzieś do swojego projektu
3) W MuteButtonSkin zmień alpha z 0.75 na 1 w tym miejscu:
<!-- big trapezoid in center -->
<s:Path winding="evenOdd" data="M 9 13 L 9 0 L 4 4 L 4 9 L 9 13 Z">
<s:fill>
<s:SolidColor color="0xFFFFFF" alpha="0.75"/>
</s:fill>
</s:Path>
<!-- smaller trapezoid on left -->
<s:Path winding="evenOdd" data="M 3 9 L 3 4 L 0 5 L 0 8 L 3 9 Z">
<s:fill>
<s:SolidColor color="0xFFFFFF" alpha="0.75"/>
</s:fill>
</s:Path>
4) W VolumeBarSkin zamień skinClass na swój MuteButtonSkin w tym miejscu:
<s:MuteButton id="muteButton" left="0" right="0" top="0" bottom="0" focusEnabled="false" skinClass="spark.skins.spark.mediaClasses.fullScreen.MuteButtonSkin" />
5) Dodaj do definicji stylów w aplikacji
s|VolumeBar {
skinClass:ClassReference("twoj.package.VolumeBarSkin")
}
I powinno działać.Robert Bąk edytował(a) ten post dnia 05.07.11 o godzinie 21:41
-
http://dev.mysql.com/doc/refman/5.0/en/error-messages-...
Error: 1088 SQLSTATE: HY000 (ER_ALTER_INFO)
Message: Records: %ld Duplicates: %ld
-
To prawda, że crossdomain.xml jest częścią zabezpieczeń flash playera, ale jest odpowiedzialna za ochronę innych domen przed tobą a nie twojej przed tobą (a tylko wtedy umieszczanie crossdomain w twojej domenie miałoby sens), stąd to właściciel danej domeny może decydować o tym kto ma dostęp do jego serwisów.
Wiem, że na pierwszy rzut oka całe te zabezpieczenia wydają się trochę przesadzone, ale na pocieszenie dodam, że w przypadku Javascriptu jest podobnie. Zasada jest taka, że kod wykonujący się u użytkownika i w kontekście jego sesji może działać tylko w granicach serwera z którego został przez użytkownika ściągnięty. Dla uzasadnienia uproszczony przykład - wchodzisz sobie na stronę banku i logujesz się, w drugiej zakładce otwierasz gazetę na której są banerki reklamowe we Flashu i Javascript. Teraz, gdyby tego zabezpieczenia nie było, każdy z nich mógłby (z twojej przeglądarki!) wysłać zapytanie do strony banku. Ponieważ bank nie ma crossdomain.xml który na to zezwala nic się nie dzieje.
Tak jak pisał Łukasz, jedną z metod jest napisanie proxy tak, żeby zapytania do serwisów szły w ten sposób: Flash -> Twój serwer -> Ich serwer -> Twój serwer -> Flash.Robert Bąk edytował(a) ten post dnia 29.12.10 o godzinie 13:43
-
Plik crossdomain musi być na serwerze na którym znajduje się WSDL, powinien być dostępny tutaj: http://135.196.210.143/crossdomain.xml
-
Akurat dla tak zdefiniowanego KategorieVo nie trzeba tworzyć dodatkowo nic, bo zmienna odpowiadająca za dzieci nazywa się standardowo. Flex automatycznie sprawdza czy zmienna children jest pusta (Tutaj uwaga - jeśli dany element nie ma dzieci zmienna children powinna być prawdopodobnie nullem, jeśli będzie to pusty Array w drzewie wyświetli się ikonka folderu, którego nie będzie można rozwinąć).
Przykład:
Robert Bąk edytował(a) ten post dnia 24.11.10 o godzinie 11:52
<mx:Tree id="tree" labelField="nazwaKategori" />
protected function creationCompleteHandler():void
{
// Element
var a:KategorieVo = new KategorieVo();
a.nazwaKategori = 'kat 1';
// Pusta kategoria (folder)
var a2:KategorieVo = new KategorieVo();
a2.nazwaKategori = 'kat 2';
a2.children = new Array();
// Kategoria z dzieckiem
var a3:KategorieVo = new KategorieVo();
a3.nazwaKategori = 'kat 3';
var a31:KategorieVo = new KategorieVo();
a31.nazwaKategori = 'kat 3.1';
a3.children = new Array();
a3.children.push(a31);
var tablica:Array = new Array();
tablica.push(a);
tablica.push(a2);
tablica.push(a3);
tree.dataProvider = tablica;
}
-
Zadziała na przykład tak:
ExternalInterface.call('eval','(document.getElementById("XX").innerText="inny tekst" )');
Pierwszy parametr dla call to nazwa funkcji.
Więcej na:
Link do dokumentacji
Edit: stylRobert Bąk edytował(a) ten post dnia 11.11.10 o godzinie 14:21
-
Jeżeli chcesz tylko Array bez duplikatów, możesz użyć innego objektu do przechowania słownika już użytych id. Np.
Robert Bąk edytował(a) ten post dnia 27.02.10 o godzinie 20:13
var usedCategories:Object = new Object();
for each(var c:XML in event.result..row) {
var aktualneID:int = c.catID;
if (!usedCategories[aktualneID])
{
var categoria:Object = Category = new Category(int(c.catID),String(c.catName));
catArray.push(categoria);
usedCategories[aktualneID] = true;
}
}
-
Ostatnio pojawiła się też inna konkurencyjna dla AlivePDF. Biblioteka purePDF jest portem javowego iText więc możliwości ma potężne - więcej na :
http://www.sephiroth.it/weblog/archives/2010/02/purepd...Robert Bąk edytował(a) ten post dnia 07.02.10 o godzinie 17:26
-
Zależy co masz dokładnie na myśli pisząc "dystrybuować". Jeżeli chodzi o wrzucenie programu na stronę, to tzw. "badge" załatwia sprawę instalacji brakującego środowiska.
[1] http://www.adobe.com/devnet/air/articles/air_badge_ins...
[2] http://www.adobe.com/devnet/air/articles/badger_for_ai...
-
Może szybki przykład, pomijam tutaj kwestie optymalizacji pod względem wydajności. Z czegos takiego:
MXML: <mx:Label id="l1" />
private var last_i:int = 0;
private var max_i:int = int.MAX_VALUE;
protected function licz():void
{
for (var i:int = last_i; ((i<max_i)) ; i++)
{
l1.text = i.toString();
}
}
Robi się coś takiego:
MXML: <mx:Label id="l1" />
private var last_i:int = 0;
private var max_i:int = int.MAX_VALUE;
private var iteracja:int = 15000;
protected function licz_z_przerwami():void
{
for (var i:int = last_i; ((i<max_i) && (i<last_i+iteracja)) ; i++)
{
l1.text = i.toString();
}
last_i = i;
if (i<max_i) callLater(licz_z_przerwami);
}
edit: styl kodu Robert Bąk edytował(a) ten post dnia 26.11.09 o godzinie 16:14
-
Nie chodziło mi o kopiowanie rozwiązania, tylko o sposób podejścia do problemu jednowątkowości. Zresztą sposób jest dosyć naturalny - chodzi o danie użytkownikowi wrażenia, że wiele rzeczy dzieje się jednocześnie, a nie robienie ich jednocześnie. Może to wyglądać np.
[znajdz 100 plikow - stop] [rysuj] [znajdz nastepne 100 plikow - stop] [rysuj] itd.
Niestety nie dzieje się to z automatu, więc trzeba uwzględnić obsługę w swoim kodzie.
Może to pomoże:
http://stackoverflow.com/questions/70232/multithreadin...
-
Akurat na przykładzie kompresji jpg-a. Ale jest źródło do przejrzenia więc powinno pomóc:
http://www.switchonthecode.com/tutorials/flex-tutorial...
- 1
- 2
- Następna »