Innen: Hungarian Scratch-Wiki

Példa a Toll használatával elkészített rajzra

A toll a Scratch egy olyan funkciója, amely lehetővé teszi a szereplők számára formák, színes pixelek és egyebek rajzolását a képernyőre a toll blokkokkal. Először a Scratch 1.0 verziójában jelent meg. A toll a Logo teknős grafikájához vezethető vissza a mozgás blokkokhoz hasonlóan, amelyekkel együtt használható a toll.

A vonal, a pont, a téglalap és a kör a legegyszerűbben lerajzolható alakzatok, de elegendő programozással bármilyen forma létrehozható.

Működése

A teknőcgrafika olyan grafikai modell, melyben mindent egy mozgó objektummal rajzoltatunk meg, amely vagy húz maga után vonalat, vagy nem. (Lehetne grafikai elemeket úgy is a képernyőre rajzoltatni, hogy csak megnevezzük a grafikai elem nevét, s elhelyezzük a képernyőn valahol. Esetleg valamilyen paramétereket is megadunk, amellyel az elem egyes tulajdonságait szabhatjuk meg, pl. a színét.) A teknős grafika esetében azonban mozgó rajzolónk van. A Logo nyelvekben, vagy például a Python Turtle könyvtára ez a rajzoló objektum egy teknős, a Scratchben meg bármely szereplő működhet ekként a Toll kiegészítő használata segítségével.

Fontos, hogy ez a mozgó objektum kis lépésekre felbontott parancsokkal irányítható. Például, hogy tegye le a tollat, azaz a parancstól kezdve húzzon csíkot maga után, vagy haladjon előre valamennyi lépést, forduljon valamennyit stb. A szereplő mozgatását a Scratchben a mozgás blokkok segítségével lehet elérni, a "nála levő tollat" pedig a Toll kiegészítő blokkjaival lehet működtetni.

Toll blokkok

Használata

A toll blokkokat gyakran használják:

Megjegyzés Megjegyzés: Példa projekteket találhatsz az egyes felhasználási kategóriák mögött lábjegyzetben[megj. 1]

Példák a használatra

Átlátszó toll

A Toll átlátszósága alapvetőleg a toll (átlátszósága v) legyen () és a toll (átlátszósága v) változzon () blokkokkal változtatható. Azonban be lehet állítani az átlátszóság értékét a toll színe legyen [#0000FF] blokkal is az alábbiakban leírt módon.

Képlet

Az ARGB-s színmeghatározás hasonló az RGB-shez, csak ki van bővítve egy további értékkel, ami az átlátszóság, vagy jobban mondva az átlátszatlanság megadásáért felel. (Átlátszatlanság, ugyanis a maximum értéknél egyáltalán nem átlátszó, s 0-nál meg teljesen.) Az átlátszóságot megadó értéket alfa értéknek nevezzük, melyet A-val rövidítünk, s ezért kerül az RGB betűk elé egy A is az átlátszatlanságot is használó színképletbe. Ahol az R amúgy a piros értéknek felel meg, a G a zöldnek, s a B a kéknek. Ezek a jelölések színek angol neveiből erednek (red, green és blue). Az összetett színt úgy határozzuk meg, mint ennek a három színnek a kevertjeként. Hogy milyen erősen vannak meg az összetett színben a piros, zöld és kék, azt az értékeik mutatják meg. Általában az RGB-s és az ARGB-s színkeverés értékei 1-től 255-ig terjednek (ugyanis így az értékeiket 16-os számrendszerben még 2 számjeggyel pont le lehet írni). Ez az alfa értékre is igaz.

A színmeghatározást RGB értékek esetében a következőképpen teheted meg a Scratchben:

toll színe legyen ((((R) * (65536)) + ((G) * (256))) + (B)) // Fontos, hogy a színbemenetes blokkot használd

toll színe legyen [#0000FF] // Ez a színbemenetes blokk

ARGB esetében pedig:

toll színe legyen ((((A) * (16777216)) + ((R) * (65536))) + (((G) * (256)) + (B)))
Megjegyzés Figyelem: Győződj meg róla, hogy az A, R, G és B értékek egész számok, így nem a más színértékeket befolyásolják. Ha bármelyikük lehet törtszám is, akkor a lenti kerekítéses kódot használd (legbiztosabb, ha mindig kerekítesz persze)

ARGB esetén kerekítést használva:

toll színe legyen (((((A) kerekítve) * (16777216)) + (((R) kerekítve) * (65536))) + ((((G) kerekítve) * (256)) + ((B) kerekítve)))

A „Futtatás képernyőfrissítés nélkül”-t használó saját blokkok előnyei

Főcikk: Képkockafestő szkript

A „Futtatás képernyőfrissítés nélkül”, az egy működési formája a saját blokkoknak, ami megtakarít munkafolyamatokat azáltal, hogy a képernyőt csak a (saját blokk alatt meghatározott) művelet befejeztével frissíti. Ennek a működésnek az eléréséhez csak a saját blokk készítésénél, vagy szerkesztésénél található jelölőnégyzetet kell bepipálni, amelynek szövege pont így hangzik: „futtatás képernyőfrissítés nélkül”.

A Scratch normális működése mellett egy hosszú rajzolási folyamatot nagyon lassan tud csak lefuttatni, de elképzelhető, hogy a rajzolni kívánt mintának csak a végeredményére van szükségünk, s a maga a rajzolási folyamatot nem szeretnénk megjeleníteni (mint például 3D projektek esetében, amikor az aktuális látványt szeretnénk kirajzolni lehetőleg minél gyorsabban, hogy időben minél több legyen a frissítése a látványnak, vagyis nagy legyen az FPS szám). Ekkor nagyon sokat segít nekünk a képernyőfrissítés-mentes futtatása a rajzolásnak.

Tekintsük például a két következő saját blokkot, amely a színpad minden pixelét kifesti valamilyen színűre. Az első esetben egy listában vannak eltárolva a képpontok színei.

színpadfestés meghatározása
[hely v] legyen (0) //  A változónk a képpont sorszámának nyomonkövetésére a listában
toll mérete legyen (2) //  A toll mérete 2 legyen (noha képpontokként fogunk haladni), hogy egy Flash Player hibát kikerüljünk
ugorj ide: x: (-240) y: (180) // A képernyő bal felső sarka
ismételd (360) 
  ismételd (480) 
    [hely v] változzon (1) // Növelődjön a változó, hisz új képponthoz értünk
    toll (színe v) legyen ([képpontok lista v] (hely) eleme) //  A toll színe az aktuális képpont színe kell legyen (listában meghatározva)
    tollat tedd le //  Lenyomat
    tollat emeld fel
    x változzon (1) //  Következő képpont
  end //  x iránybeli ismétlés
  y változzon (-1) //  Újabb sor
  x legyen (-240) //  Vissza a képernyő bal oldalára
end //  y iránybeli ismétlés

A következő esetben egy változóban ((változó) névvel) vannak felsorolva pontosan 3 számjeggyel a képpontok színei (ha az első képpont színe például 1, akkor 001-el fog kezdődni a változónk).

draw meghatározása
[hely v] legyen (0) //  Ez lesz a változónk, hogy nyomonkövessük a változóban az aktuális képpont színadatának helyét
toll mérete legyen (2) //  A toll mérete 2 legyen (noha képpontokként fogunk haladni), hogy egy Flash Player hibát kikerüljünk
ugorj ide: x: (-240) y: (180) //  A kezdeti pozíciónk most is bal fent
ismételd (360) 
  ismételd (480) 
    [hely v] változzon (3) //  Egy adatnak a hosszával (3 karakter) változtassuk a helyet megadó változónkat
    [ideiglenes v] legyen [] //  Egy ideiglenes változót használunk a színadat kinyeréséhez
    [ideiglenes v] legyen ((változó) ((hely) - (2)) betűje) //  Első számjegy
    [ideiglenes v] legyen ((ideiglenes) ((változó) ((hely) - (1)) betűje) együtt) //  Első és második számjegy
    [ideiglenes v] legyen ((ideiglenes) ((változó) (hely) betűje) együtt) //  Mindhárom számjegy együtt
    toll (színe v) legyen (ideiglenes) //  A kinyert adatra állítjuk a toll színét
    tollat tedd le  //  Lenyomat
    tollat emeld fel
    x változzon (1) //  Következő képpont
  end //  x irányú ismétlés
  y változzon (-1) //  Eggyel alatti sorba
  x legyen (-240) //  Vissza a sor elejére
end //  y irányú ismétlés

Bármelyik esetet is használjuk, összesen 172 800 képpontunk van (!), s ezeknek mindegyikének a színét el kell tároljuk vagy a listában vagy a változóban (ekkor 518 400 számjegy hosszú lesz a változónk!). Ez még megoldható, viszont kivárni, hogy képernyőfrissítéssel végigfesse az egész színpadot elég hosszas lenne. Ezért használjuk ilyenkor mindenképpen a frisstés nélküli futtatás funkcióját. Kisebb felbontás is persze használható, s olyankor gyorsabban végez a festés és kevesebb adatot is kell eltárolnunk (például ha tényleg 2 képpontokként fessük le a színpadot, az már lefelezi mindkét értéket).

Lásd még

Külső linkek

SandCastleIcon.png Ez a szekció tartalmaz linkeket külső weboldalakra vagy programokra mutatva, amikben nem bízik meg feltétlen a Scratch, vagy nem a Wikipédialapok egyike. Ne feledkezz el az internet biztonságos használatáról, tekintve, hogy mi nem tudunk garanciát vállalni az ezen oldalakon való böngészésért.


Megjegyzések

  1. A listába került projektek készítői semmilyen anyagi javakat nem juttattak a wiki szerkesztői részére annak érdekében, hogy projektjeik kiválasztásra kerüljenek. A választás csupán az első alkalmas projektekre esett. Ennek megfelelően kibővíthető. Ha javasolnál is még példát mutató projektet, még ha nem vagy szerkesztő, akkor is írhatsz Szerkesztő:Simiagain, vagy más szerkesztő profiljára a Scratchen.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.