Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index /  Amiblitz /  Amiblitz Lesematerial /  Ab2 Referenzhandbuch (index) /  Ab2 Referenzhandbuch (Kapitel 24) / 

Referenzhandbuch



Referenzhandbuch

Kapitel 24


Kapitel 23 Inhaltsverzeichnis Kapitel 25

Shapes


Shapes, auch Bobs genannt, sind Grafikobjekte. Sie sind vielfältig einsetzbar. Zum Beispiel können Sie als Grundlage für Grafikgadgets oder Menüs benutzt werden. In Spielen finden wir sie meist als bewegliche und/oder animierte Grafikobjekte. Für das "Zeichnen" (oder auch die Übergabe) eines Shapes auf eine Bitmap wird der Amiga-Blitterchip verwendet. Der Vorgang ist daher sehr schnell und wird meist als "blitten" eines Shapes bezeichnet. Um eine flimmerfreie Animationroutine schreiben zu können, ist eine größtmögliche Blitgeschwindigkeit gefordert. Manchmal ist es sogar notwendig, die Blitgeschwindigkeit und die Animationsfolge gegenseitig anzupassen. Hierfür müssen Sie wissen, daß der Blitvorgang mit der Größe und der Farbtiefe des Blits an Dauer zunimmt. Das Blitten eines großen Shapes dauert länger als das Blitten eines kleinen Shapes. Das Blitten eines Shapes mit der Farbtiefe 2 (4 Farben) dauert doppelt so lange wie das Blitten eines gleichgroßen Shapes mit einer Bitplane (2 Farben). Bei Farbtiefe 3 dauert der Vorgang dreimal so lange usw.. Es ist also schon von der Hardware her nicht möglich, eine flimmerfreie Animation mit 50 Riesenshapes der Farbtiefe 6 zu programmieren. Ebenfalls bestimmt die Art des Blittens die Dauer des Blitvorganges. AmiBlitz2 stellt Ihnen mit Blit den einfachsten und schnellsten Befehl für das Blitten zur Verfügung. Hierbei ist aber ein schnelles und einfaches Löschen des Shapes nicht möglich. Hierfür steht Ihnen der Befehl QBlit zur Verfügung. Dieser benötigt etwas mehr Speicher und ist ein wenig langsamer, ermöglicht aber saubere Animationen. Muss auch die Hintergrundgrafik erneuert werden, können Sie BBlit verwenden. Beachten Sie aber: BBlit ist ein machtvoller und effektiver Befehl, benötigt aber auch sehr viel Speicher und ist entsprechend langsamer. Sie werden beim Programmieren von Shapeanimationen immer Kompromisse eingehen müssen. Verkleinern der Shapes oder verringern der Farbanzahl oder beides, bis Sie den gewünschten Animationsfluß erreichen. Da aber auch das Double Buffering möglich ist, können Sie ein Maximum erreichen, das für fast alle Fälle ausreicht. Die Entscheidung, welchen Kompromiß Sie wählen, müssen Sie allerdings als guter Programmierer selber treffen.

  • LoadShape
  • SaveShape
  • LoadShapes
  • SaveShapes
  • GetaShape
  • CopyShape
  • AutoCookie
  • MakeCookie
  • ShapeWidth
  • ShapeHeight
  • Handle
  • MidHandle
  • XFlip
  • YFlip
  • Scale
  • Rotate



  • Index

    Befehl: LoadShape

    Syntax: LoadShape Shapenummer,Filename$[,Palettennummer]

    Modus: Amiga


    Lädt ein IFF-ILBM-File als Shapeobjekt in den Speicher. Shapenummer bestimmt das Shapeobjekt. Filename$ ist der Pfad und der Name Ihres Bildes, das Sie laden möchten. Palettennummer ist optional. Wenn sie mit angegeben wird, werden die Farben des Shapes in das Palettenobjekt Palettennummer mit eingeladen.

    Beispiel:

      Screen 0,3                   ;öffne einen Intuition-Screen
      ScreensBitMap 0,0            ;und übernehme seine Bitmap
      LoadShape 0,"MyShape.iff",0  ;ein Shape von Diskette laden
      Use Palette 0                ;und seine Palette benutzen
      Blit 0,0,0                   ;und auf das Shape auf den Bildschirm blitten
      MouseWait
    


    siehe auch: LoadShapes, SaveShape, SaveShapes



    Index

    Befehl: SaveShape

    Syntax: SaveShape Shapenummer,Filename$[,Palettennummer]

    Modus: Amiga


    Speichert ein Shape als IFF-ILBM-File auf Datenträgern ab. Möchten Sie die Farbinformationen mitabspeichern, geben Sie den Palettenummer-Parameter mit an.

    siehe auch: LoadShape, LoadShapes



    Index

    Befehl: LoadShapes

    Syntax: LoadShapes Shapenummer[,ShapenummerEnde],Filename$

    Modus: Amiga


    LoadShapes lädt eine Serie von Shapeobjekten auf einmal in den Speicher. Die Serie muß zuvor mit SaveShapes erstellt worden sein. Shapenummer gibt die Objektnummer für das erste Shape an. Die weiteren Shapes werden aufsteigend hinzugefügt. ShapenummerEnde bestimmt, wieviele Shapes der Serie geladen werden sollen. Filename$ gibt Pfad und Name des Files, das geladen werden soll, an.

    siehe auch: SaveShapes, LoadShape, SaveShape



    Index

    Befehl: SaveShapes

    Syntax: SaveShapes ShapenummerAnfang,ShapenummerEnde,Filename$

    Modus: Amiga


    Erstellt ein File mit einer Serie von Shapeobjekten. Die im Speicher befindlichen Shapes werden von ShapenummerAnfang bis ShapenummerEnde abgespeichert. Filename$ gibt Pfad und Name des Files an. Das File kann mit LoadShapes später wieder geladen werden.

    Hinweis:
    Die zu verwendenden Shapes müssen zuvor einzeln mit LoadShape geladen werden. Wenn diese dann mit SaveShapes gespeichert worden sind, ist ein einzelnes Laden der Shapes nicht mehr notwendig.

    Vorteil: Nur ein Filezugriff notwendig.

    siehe auch: LoadShapes, LoadShape, SaveShape



    Index

    Befehl: GetaShape

    Syntax: GetaShape Shapenummer,X,Y,Breite,Höhe

    Modus: Amiga/Blitz


    Schneidet einen rechteckigen Teil einer Bitmap aus und übergibt diesen als Shapeobjekt Shapenummer. X und Y (X- und Y-Koordinaten für die linke, obere Ecke), Länge und Höhe (beides in Pixel) geben den Bereich an, der ausgeschnitten werden soll.

    Beispiel:

      Screen 0,3                              ;ein Inution-Screen
      ScreensBitMap 0,0                       ;Bitmap nehmen
      Cls                                     ;Bitmap löschen
      Boxf 10,10,29,29,2                      ;etwas für ein Shape malen
    
      Box 12,12,27,27,3
      Circlef 20,20,5,4
      GetaShape 0,10,10,20,20                 ;Shape 0 aus Bitmap nehmen
      Cls                                     ;und Bitmap wieder löschen
    
      For k=1 To 100                          ;Start der Schleife
              Blit 0,Rnd(160)+80,Rnd(100)+50  ;Shape 0 an zufällige Position blitten
      Next                                    ;Schleifenende
      MouseWait
    




    Index

    Befehl: CopyShape

    Syntax: CopyShape ShapenummerQuelle,ShapenummerZiel

    Modus: Amiga/Blitz


    CopyShape kopiert das Shapeobjekt ShapenummerQuelle in das Shapeobjekt ShapenummerZiel. CopyShape wird oft benutzt, wenn ein Shapeobjekt auch in manipulierter Form (z.B: mit XFlip) vorliegen soll.



    Index

    Befehl: AutoCookie

    Syntax: AutoCookie On/Off

    Modus: Amiga/Blitz


    Schaltet das Cookieflag an oder aus. Voreingestellt ist On. Bei einer Blittingroutine (z.B. Blit) wird ein sogenanntes Cookiecut benötigt. Immer, wenn ein Shapeobjekt erstellt wird (z.B. mit LoadShape), wird automatisch ein Cookiecut erzeugt. Das Cookiecut verbraucht einen Teil des zur Verfügung stehenden Chipspeicherbereichs. Sollten Sie die Shapes nicht zum Blitten nutzen wollen (z.B. als Gadget), können Sie das automatische Anfertigen eines Cookiecuts mit AutoCookie Off ausschalten.

    siehe auch: MakeCookie



    Index

    Befehl: MakeCookie

    Syntax: MakeCookie Shapenummer

    Modus: Amiga/Blitz


    Erstellt nachträglich ein "Cookiecut" für das mit Shapenummer festgelegte Shape, wenn dies vorher ohne Cookiecut geladen wurde.

    siehe auch: AutoCookie



    Index

    Funktion: ShapeWidth

    Syntax: ShapeWidth(Shapenummer)

    Modus: Amiga/Blitz


    Diese Funktion übergibt die Länge eines Shapeobjektes in Pixel.

    siehe auch: ShapeHeight



    Index

    Funktion: ShapeHeight

    Syntax: ShapeHeight(Shapenummer)

    Modus: Amiga/Blitz


    Diese Funktion übergibt die Höhe eines Shapeobjektes in Pixel.

    siehe auch: ShapeWidth



    Index

    Befehl: Handle

    Syntax: Handle Shapenummer,X,Y

    Modus: Amiga/Blitz


    Beim Blitten wird normalerweise die linke, obere Ecke des Shapes an die von Ihnen angegebenen Koordinaten gesetzt. Mit Handle können Sie statt der linken, oberen Ecke eine andere Stelle des Shapes anwählen.

    Der festgelegte Punkt wird auch "HOTSPOT" genannt.

    siehe auch: MidHandle



    Index

    Befehl: MidHandle

    Syntax: MidHandle Shapenummer

    Modus: Amiga/Blitz


    Die Mitte des Shapeobjektes Shapenummer wird zum Hotspot erklärt.

    Weitere Informationen unter Handle.

    siehe auch: Handle



    Index

    Befehl: XFlip

    Syntax: XFlip Shapenummer

    Modus: Amiga/Blitz


    XFlip ist einer der mächtigen Befehle von BB2 zur Shapemanipulation.

    XFlip spiegelt (oder klappt) das Shapeobjekt Shapenummer horizontal.

    Beispiel:

      Screen 0,3             ;ein Intuition-Bildschirm
      ScreensBitMap 0,0      ;seine Bitmap
      Cls                    ;löschen
      Circlef 32,32,32,3     ;malen
      Boxf 32,0,63,63,2      ;ein Shape
      GetaShape 0,0,0,64,64  ;aus der Bitmap aufnehmen
      Cls                    ;Bitmap wieder löschen
      CopyShape 0,1          ;das Shape kopieren
      XFlip 1                ;XFlip die Kopie!
    
      Blit 0,0,0             ;Original zeigen
      Blit 1,0,100           ;geklappte Kopie zeigen
      MouseWait
    


    siehe auch: YFlip



    Index

    Befehl: YFlip

    Syntax: YFlip Shapenummer

    Modus: Amiga/Blitz


    YFlip spiegelt (oder klappt) das Shapeobjekt Shapenummer vertikal.

    Beispiel:

      Screen 0,3             ;ein Intuition-Bildschirm
      ScreensBitMap 0,0      ;seine Bitmap
      Cls                    ;löschen
      Circlef 32,32,32,3     ;malen
      Boxf 32,0,63,63,2      ;ein Shape
      GetaShape 0,0,0,64,64  ;aus der Bitmap aufnehmen
      Cls                    ;Bitmap wieder  löschen
      CopyShape 0,1          ;das Shape kopieren
      YFlip 1                ;YFlip die Kopie!
      Blit 0,0,0             ;Original zeigen
      Blit 1,0,100           ;geklappte Kopie zeigen
      MouseWait
    


    siehe auch: XFlip



    Index

    Befehl: Scale

    Syntax: Scale Shapenummer,X-Veränderung,Y-Veränderung[,Palette]

    Modus: Amiga/Blitz


    Scale ermöglicht das Vergrößern oder Verkleinern des Shapes Shapenummer.
    Die Parameter X- und Y-Veränderung legen den Wert der Veränderung fest.

    Ist der Wert größer 1, wird das Shape vergrößert, ist der Wert kleiner 1, wird das Shape verkleinert. Ein Wert von 1 hat keine Wirkung.

    Wird nur ein Parameter angegeben, erfolgt eine Änderung nur über eine Achse.

    Wird der Palette-Parameter angegeben, rechnet Blitz2 mit der "brightest Pixel"-Routine. Dies heißt: Bei der Verkleinerung gehen keine Details verloren.

    Beispiel:

      Screen 0,3              ;ein Intuition-Screen
      ScreensBitMap 0,0       ;Bitmap des Screens
      Cls                     ;Bitmap löschen
      For k=7 To 1 Step -1    ;eine Schleife, um eine Art
      Circlef 32,32,k*4,k     ;Shape zu erzeugen
      Next
      GetaShape 0,0,0,64,64   ;Shape aufnehmen
      For k=1 To 6            ;Schleifenstart
             CopyShape 0,k    ;Shape kopieren
             Scale k,k/4,k/4  ;Größe verändern
      Next                    ;Schleifenende
      Cls
      For k=1 To 6            ;Schleifenstart
              Blit k,k*32,0   ;gerade erzeugte Shapes anzeigen
      Next                    ;Schleifenende
      MouseWait
    




    Index

    Befehl: Rotate

    Syntax: Rotate Shapenummer,Drehveränderung

    Modus: Amiga/Blitz


    Rotate erlaubt es, das Shape Shapenummer im Uhrzeigersinn zu drehen.

    Der Parameter Drehveränderung sollte zwischen 0 und 1 liegen.

    Ein Wert von 0.25 dreht das Shapeobjekt um 90 Grad, 0.5 um 180 Grad.

    Beispiel:

      Screen 0,1                ;ein Intuition-Screen
      ScreensBitMap 0,0         ;seine Bitmap übernehmen
      BitMapOutput 0            ;und für "Print"-Befehle nutzen
      Queue 0,1                 ;Queue für QBlit erzeugen
      Cls                       ;Bitmap löschen
      Boxf 0,0,15,63,1          ;ein Rechteck zeichnen
      GetaShape 0,0,0,16,64     ;und es als Shape aufnehmen
      Cls                       ;Bitmap löschen
      For k=1 To 64             ;Schleifenstart
             CopyShape 0,k      ;das Original-Shape 64mal kopieren
             Rotate k,k/64      ;jede Kopie etwas weiter als die vorherige drehen
             MidHandle k        ;und sie um die Mittelachse drehen
             Print "."          ;dem Anwender mitteilen, daß wir noch arbeiten
      Next                      ;Ende der Copy-Schleife
      Cls                       ;Bitmap löschen
      While Joyb(0)=0           ;während der Joystickknopf nicht gedrückt ist ...
      For k=1 To 64             ;alle Shapes anzeigen
             VWait              ;auf den Anfang des Frames warten
             UnQueue 0          ;Queue löschen
             QBlit 0,k,160,100  ;und nächstes Shape malen
      Next
      Wend
    







    Impressum
    Copyright © 2001-2007 by Cj-Stroker. Alle Rechte vorbehalten (Legal Info)
    AMIGA und zugehörige Logos sind eingetragene Warenzeichen von Amiga, Inc.