Autor | Zpráva | ||
---|---|---|---|
FlashManiac Profil |
#1 · Zasláno: 21. 2. 2006, 15:37:48 · Upravil/a: FlashManiac
Zdravím,
mohl by mi prosím někdo objasnit jak funguje třída BitmapData ve Flashi 8? Potřebuju totiž zjistit, jakou barvu maj jednotlivý pixely na ploše. např budu mít na ploše umístěnou barevnou šachovnici a podle barev pixelu na který kliknu se mi provede nějaká akce... tady je nejaký kod který jsem našel ve Flash nápovědě,ale vůbec z toho nejsem moudrý..(je samozrejmě trochu upravený pro me potreby) import flash.display.BitmapData; Hlavně teda nechápu tu deklaraci... var barva:BitmapData = new BitmapData(800, 600, true,0); je mi jasný že 800 a 600 jsou rozměry bitmapy.ale když nastavím průhlednost na true tak mi vůbec neukazuje hexa kód dané barvy, pokud ho nastavím na false, tak se mi zas celý stage pokryje tou barvou kterou jsem nastavil... já ale potřebuju zjistit barvu pixlu na stagi když se tam něco děje...a ne když nic nevidim... PLS help |
||
FlashManiac Profil |
#2 · Zasláno: 21. 2. 2006, 16:02:24
JO a ještě něco má takový dojem že new BitmapData(800, 600, true,0); nepodporuje dynamické velikosti, že bych místo 800,600 dal proměnné.. pak mi to hlásí undefined, je to možné nějak dynamicky?
|
||
Hanz Profil |
#3 · Zasláno: 21. 2. 2006, 16:04:42 · Upravil/a: Hanz
FlashManiac
No pořádně nechápu o co ti jde. Popiš co potřebuješ udělat, protže to co jsi tu popsal je přesně to co to má dělat :o) Jo a s tím dynamicky není problém. Nevím proč ti to nejde, ale mi to jde přez promněnnou. |
||
FlashManiac Profil |
#4 · Zasláno: 21. 2. 2006, 16:12:07 · Upravil/a: FlashManiac
No zkrátka si představ, že mám na poli MC, který má několik druhů barvy například je červeno modro bílý... no a já potřebuju aby když se na ten MC klepne tak se zjistila barva na kterou se kleplo a podle barvy se pak následně vykonala nějaká funkce.. to je vše,ale pořádně se nemůžu dosta ani do té deklarace... tak mi to pls napiš polopaticky..Děkuju XD
P.S. dynamicky to jde . |
||
Hanz Profil |
#5 · Zasláno: 21. 2. 2006, 16:17:57 · Upravil/a: Hanz
FlashManiac
Tak ten script je takhle: import flash.display.BitmapData; Jo tu barvu rovnou převádím na hexadecimální hodnotu. |
||
FlashManiac Profil |
#6 · Zasláno: 21. 2. 2006, 16:26:23
Díky moc zachránils mi kožuch...XD
THX |
||
FlashManiac Profil |
#7 · Zasláno: 22. 2. 2006, 11:40:44
ehm, měl bych ještě jeden dotaz... Jak z toho kódu,ať už hexa nebo toho který generuje Flash, dostanu jednotlivé složky RGB např. R=0 G=25 B=120 . V helpu jsem se na to díval ale tak nějak jsem to nepochytil...XD PLS HELP
|
||
FlashManiac Profil |
#8 · Zasláno: 23. 2. 2006, 18:22:32
To vázně nikoho nic nenapadá ?
|
||
Hanz Profil |
#9 · Zasláno: 23. 2. 2006, 19:07:26
FlashManiac
Já to taky nechápu. Jde o nějaký přepočet, kterému nerozumím (přepočítávají se tak barvy). http://www.actionscripts.org/tutorials/advanced/Color_fade/index2.shtm l |
||
FlashManiac Profil |
#10 · Zasláno: 23. 2. 2006, 21:05:22 · Upravil/a: FlashManiac
Jo tak uz jsem to dal.. diky... Uz jsem to pochopil..
function hexToRGB(hex:Number){ 1/ten operátor << odstraní určitý počet bitů z binárního čísla(počítač pracuje jen s binárnímy čísly), čili pokud převedu hexa číslo RGB na binární dostanu 24bitové číslo, kde vím, že prvních 8bitů reprezentuje červenou barvu... Proto posledních 16bitů odseknu, nezajímají mě...8bitové číslo uložím do proměnné a mám červenou barvu... 2/Pak musím odečíst číslo původní 0x... a červenou barvu a získám tak součet zelené a mordré barvy(pro správný výsledek musím 8bitovému číslu připsat dalších 16bitů -16nul- -udělám to operátorem opačným tedy >> 16- Teď tedy odečítám dvě 24bitová čísla) Získám 16bitové číslo se zakódovanou hodnotou G a B kanálu.. 3/vím, že prvních 8bitů v tom 16bitovém čísle z bodu 2/ reprezentuje zelenou barvu, proto udělám stejný krok jako v bodě 1/,ale neuseknu 16bitů ale jen 8..Získám tak 8bitové číslo, reprezentující zelenou barvu a uložím.. 4/Následuje poslední krok který je stejný jako bod2/,ale opět odečítám dvě 16bitová čísla(tzn. za zelenou barvu musím opět přidat >> 8nul,abych dostal 16 bitové číslo... Po odečtení tedy dostanu poslední položku, která je už 8bitová a mám i modrý kanál a uložím.... Hanz Díky za odkaz...XD Vím, že tohle povídání je asi zbytečný,ale chtěl jsem ho tu napsat pro ty, kteří by to chtěli použít a nevěděli jak na to... Doufám, že je ten postup pochopitelný...,ale myslím, že v kombinaci s tím odkazem to je OK...je tam všechno krásně rozkreslený.. Nejlepší to asi bude hodit si jako vlastní třídu, nebo si rozšířit třídu Math... |
||
FlashManiac Profil |
#11 · Zasláno: 23. 2. 2006, 21:22:00 · Upravil/a: FlashManiac
Ještě bych rád uvedl i konverzi RGB složek na hexa kód, když už to tu máme tak hezky rozpracované...
function RGBToHex(red:Number,green:Number,blue:Number):Number{ Postupy jsou víceméně totožné jako v předchozím příspěvku,ale děje se tak přesně naopak a čísla sčítám, proto se to jeví jako jednodušší.. Doufám, že to někomu pomůže, když by na tento problém narazil... |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0