Für den absoluten Anfänger

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Für den absoluten Anfänger

Beitrag von Xaby »

Hier möchte ich gern ausführlich Hilfe leisten zu welchem Thema auch immer. Fangen wir mit den PureBasic-Gadgets und den FensterAnwendungen an.

Vorweg:

Variablen sind ausgedachte Worte, in denen Zahlen oder Buchstabenwerte enthalten sein können.

Um eine Variable festzulegen, braucht man nur das Wort schreiben, wie die Varible heißen soll und ihr einen Wert zuzuweisen.

Code: Alles auswählen

MeineVariable=3
MeineVariable enthält nun den Wert 3.
VariablenNamen müssen immer zusammengeschrieben sein und dürfen Zahlen nur am Ende enthalten. Keine Sonderzeichen für die Namensgebung. Das Leerzeichen wäre ein Sonderzeichen.
Ebenso sind Rechenzeichen Sonderzeichen. Punkte und andere Dinge sind auch Tabu, ebenso Umlaute und das Esszett.
Die Groß- und Kleinschreibung spielt in PureBasic keine Rolle.
Sollte für die Übersichtlichkeit aber immer gleichen Regeln folgen.

Eine Bedingung wird mit IF abgefangen und hört mit ENDIF wieder auf.
Bedingungen sind logische Abfragen, die zutreffen oder eben nicht.

Zum Beispiel:

Ist in Variable mit dem VariablenNamen "MeineVariable" der Wert 3 enthalten? Ist das wahr?

Code: Alles auswählen

IF MeineVariable=3
  ; wahr
ELSE
 ; unwahr, falsch
ENDIF
Damit das Programm immer und immer wieder bestimmte Dinge überprüft, müssen einige Anweisungen in einer Schleife wiederholt werden. Wann die Schleife aufhören soll, die Befehle zu wiederholen, muss ebenfalls festgelegt werden, da sie sonst bis in alle Ewigkeit weiterläuft.

REPEAT (Wiederhole)
UNTIL (Bis Bedingung wahr ist ...)



Kleines Malprogramm.

Code: Alles auswählen


If OpenWindow(0,0,0,450,450,"Mein Malprogramm") And CreateGadgetList(WindowID(0))
; öffnet Fenster mit der Nummer "0"

CreateImage(0,400,400)
ImageGadget(0,0,0,400,400,ImageID(0)) ; Erzeugt Gadget mit der Nummer "0", welches das Bild mit Nummer "0"
; Die Nummern von Fenstern, Gadgets und Bildern sind unterschiedlich, auch wenn sie alle "0" sind
; ImageID, WindowID, GadgetID und andere ID()-Befehle geben dir diese Werte zurück ... ist erstmal weniger von Bedeutung

Repeat ; Wiederhole
  Event=WaitWindowEvent() ; Wartet bis etwas passiert im Fenster
  
  If Event=#PB_Event_CloseWindow ; Wenn das Fenster geschlossen wird ...
    ; dann
    Quit=1 ; Variblae Quit wird auf eins gesetzt, damit ist es ungleich NULL
    ; Quit war vorher =0, alle neuen Variablen sind mit NULL in PureBasic gefüllt
  Else
    ; ansonsten
    If Event=#PB_Event_Gadget ; Wenn ein Gadget betroffen ist
     GadgetNr=EventGadget() ; Ermittelt, welches Gadget betroffen ist
     
      If GadgetNr=0 ; Wenn das Gadget mit der Nummer "0" zum Beispiel gedrückt wurde
          If EventType()=#PB_EventType_LeftClick ; wenn linke/erste Maustaste gedrückt wurde
            Farbe=RGB(255,0,0) ; rot 
          Else  
            Farbe=RGB(0,255,0) ; grün
          EndIf
        
        StartDrawing(ImageOutput(0))         
          Circle(WindowMouseX(0),WindowMouseY(0),20,Farbe) ; zeichnet Kreis, Farbe wird oben festgelegt                   
        StopDrawing()
        
        SetGadgetState(0,ImageID(0)) ; Bild muss auf dem Gadget aktualisiert werden  
        
      
      EndIf
    
    
    EndIf
  EndIf
  

Until Quit ; bis Variable Quit einen Wert ungleich NULL enthält

EndIf

Zwei Knöpfe und ein leeres (schwarzes) Bild im Fenster.

Code: Alles auswählen

EnableExplicit ; Passt auf, dass alle Variablen deklariert werden, also jede Variable wird exakt bestimmt

CreateImage(0,400,400)  ; erstellt Bild-Nr. "0" mit 400 Pixel breit und hoch

Procedure createGadgets() ; Erstell einen Befehl, der andere Befehle abarbeitet.
; Die folgenden Befehle werden erst ausgeführt, wenn createGadgets() aufgerufen wird (siehe weiter unten)
  ImageGadget(0,5,5,400,400,ImageID(0)) ; Erstellt einen Gadget (Schaltfläche) wo ein BildNr. "0" drauf ist.
  
  ; zwei Knöpfe mit Text
  ButtonGadget(1,410,20,100,20,"Hallo")
  ButtonGadget(2,410,60,100,20,"Basic")
  
  ; Editor-Feld / Textfeld (weiß, leer)
  EditorGadget(3,410,100,210,200)
  
  SetGadgetColor(3, #PB_Gadget_BackColor, RGB(255,255,0)); Farbe der Schaltfläche Nr. 3 (Editorfeld) wird gelb
  ; Wenn du diese Zeile mit einem Semikolon nicht ausführen lässt, bleibt dein Editor-Feld weiß
  ; SetGadgetColor(3, #PB_Gadget_BackColor, RGB(255,255,0))
  
  
EndProcedure


If OpenWindow(0,0,0,630,450,"FL Bild",#PB_Window_ScreenCentered | #PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
  
  createGadgets() ; Springt oben in den eigenen Befehl, der die Schaltflächen erstellt.
  ; Wenn du vor diesen Befehl ein Semikolon setzt, wirst du keine Schaltflächen sehen
  ; createGadgets()  
  
  Define Event.l, Quit, GadgetNr ; Define sagt nur, dass hier Varibalen folgen, alle sind vom Typ Longint (32 Bit Ganzzahl)  
  
  Repeat ; Wiederholen
    
    Event=WaitWindowEvent()
    
    If Event=16
      Quit=1
      
    ElseIf Event=#PB_Event_Gadget ; Wenn eine Schaltfläche ... ein Ereignis auslöst ... zum Beispiel gedrückt wurde
      GadgetNr=EventGadget() ; Die Variable GadgetNr beinhaltet nun die Nummer der Schaltfläche, welche ein Ereignis ausgelöst hatte
      
      If GadgetNr=1 ; Wenn Schaltfläche Nr. 1 (Knopf mit "Hallo") gedrückt wurde ... dann
        AddGadgetItem(3,0,"Der Nutzer hat auf Hallo gedrückt") ; Hier wird ein Text auf das Editor-Feld geschrieben
        ; AddGadgetItem fügt weitere Textfelder dem Gadget mit Nr. 3 hinzu. Achtung! Nicht alle Gadgets unterstützen diesen Befehl!
        ; Einfach mal bei AddGadgetItem() in der Hilfe nach schauen. Auf den Befehl mit dem Cursor und dann [F1]
      
      ElseIf GadgetNr=2 ; Ansonsten wenn Schaltfläche Nr. 2 (Knopf mit "Basic") gedrückt wurde ... dann
         AddGadgetItem(3,0,"Der Nutzer hat auf "+GetGadgetText(2)+" gedrückt")
         ; Hier wird ein Text auf das Editor-Feld geschrieben
         ; Der Text ist zusammengesetzt aus "Der Nutzer hat auf " und dem Text, der auf dem Kopf Nr. 2 steht ... und am Ende steht " gedrückt"
        
      
      EndIf     
      
      
    EndIf    
    
    
  Until Quit ; Bis Ende 
  
  CloseWindow(0) ; Schließt Fenster. Wenn dieser Befehl fehlt, wird es trotzdem geschlossen  
  
EndIf
Edit by NicTheQuick: Titel geändert
Zuletzt geändert von Xaby am 26.06.2008 17:14, insgesamt 1-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Text-Fenster
Eingabeaufforderung

Um Logik zu veranschaulichen.

Code: Alles auswählen

OpenConsole()
Print("Hallo, bist du PureBoard-Mitglied? JA oder NEIN?: ")
Antwort.s=Input() ; Die Texteingabe wird in der Variable Antwort gespeichert, sie ist vom Typ TEXT (zu sehen an dem .s)
If Antwort="JA"
  Print("Das ist ja prima")
Else
 Print("Schade")
EndIf
Input() ; Damit du den Text auch lesen kannst und die Console nicht sofort geschlossen wird
CloseConsole()

Beispiel 2.
Nach beenden des Programms ist ein Bild in der Zwischenablage.
Das kann mit Paint aus der Zwischenablage in Paint eingefügt werden.
Andere Bildbearbeitungsprogramme haben ebenfalls solche Funktionen.

Code: Alles auswählen

OpenConsole() ; öffnet "DOS-Fenster"
Print ("Hallo ... bitte ENTER druecken") ; Schreibt "Hallo ... bitte ENTER druecken" in das Ausgabefenster
Input() ; Wartet auf Eingabe, Engabe zu Ende, wenn ENTER gedrückt wurde
CloseConsole() ; Schließt das "Text"-Fenster

CreateImage(0,320,240) ; Erstellt Bild mit Nummer "0"
StartDrawing(ImageOutput(0)) ; folgende Zeichenoperationen werden nun auf das Bild mit Nummer "0" angewendet
  Box(0,0,320,240,RGB(255,128,0)) ; Zeichnet ausgefülltes Rechteck in rot
  Cirlce(160,120,40,RGB(0,0,255)) ; zeichnet Kreis in blau
StopDrawing()
SetClipboardImage(0) ; Kopiert das Bild in die Zwischenablage
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Bewegen einen Ball

Beitrag von Xaby »

Ein Beispiel, wie ein Programm aussehen könnte, wo man eine Spielfigur mit Hilfe der Pfeiltasten bewegt. Die Spielfigur wird durch einen blauen Kreis simbolisiert.

ACHTUNG! Wenn der Kreis außerhalb des sichtbaren Bereichs ist, müsst ihr den "Kreis" erst wieder zurück holen.

Code: Alles auswählen

Define Quit=0

If InitSprite() And InitKeyboard() ; Öffnet Sprite- (kleine Bildchen) und Tastatur-Umgebung

   
  If OpenScreen(800,600,32,"Mein Spiel") ; Vollbild mit 800 x 600 Pixeln bei 32 Bit Farbtiefe wird geöffnet, Bild wird schwarz
    
    CreateSprite(0,32,32,#PB_Sprite_Texture) ; Erstellt kleines Bildchen mit Nr. "0"
    StartDrawing(SpriteOutput(0)) ; Wir wollen nun auf das Bildchen mit der Nr. "0" zeichen
    Circle(15,15,15,RGB(100,100,250)) ; wir zeichen einen Kreis in die Mitte
    StopDrawing() ; Wir hören auf auf das Bildchen zu zeichnen
    
    X=400
    Y=300 ; Start-Position unseres Bildchens
    
    

   Repeat
     ExamineKeyboard() ; Tastatur wird abgefragt
  
    If KeyboardPushed(#PB_Key_Escape) ; Esc-Taste oben links auf der Tastatur
      Quit=1
    EndIf
    
    ; Beim Drücken auf die Pfeil-Richtungstasten werden die Variablen X und Y verändert
    ; Da später unser Bildchen mit dem Ball drauf an die Stelle X, Y gesetzt wird, verschiebt es sich,
    ; wenn wir die Tasten drücken
    
    If KeyboardPushed(#PB_Key_Left) ; Tastatur-Richtungstaste nach links drücken
      X-1
    EndIf
    If KeyboardPushed(#PB_Key_Right) ; Tastatur-Richtungstaste nach rechts drücken
      X+1
    EndIf
    If KeyboardPushed(#PB_Key_Up) ; Tastatur-Richtungstaste nach oben drücken
      Y-1
    EndIf
    If KeyboardPushed(#PB_Key_Down) ; Tastatur-Richtungstaste nach unten drücken
      Y+1
    EndIf
    
    
    ;/ Grafikbefehle   
    
    DisplaySprite(0,X,Y) ; Zeigt kleines Bildchen an, wir haben auf das Bildchen einen Kreis gezeichnet    
    
    FlipBuffers() ; Notwendiger Befehl, damit Bildschirminhalt richtig aktualisiert wird
    ClearScreen(0) ; Bildschriminhalt wird mit schwarzer Farbe verdeckt/gelöscht
    
  Until Quit ; Wenn Variable Quit <> 0 ist, also zum Beispiel =1 nach dem Drücken der Esc-Taste,
  ; Wird Schleife nicht mehr wiederholt
  
  CloseScreen() ; Schließt Bildschirm-Modus wieder
  
  Else 
    MessageRequester("Fehler","Grafikmodus konnte nicht geöffnet werden")
  
  EndIf

EndIf

Komplexerer Code, weniger auskommentiert, da die Befehle nun schon öfter in den oberen Beispielen erklrät worden sind.

Code: Alles auswählen

; Test von Folker Linstedt aka xaby 
; PB 4.x 
; 2007|08|13, 2008-01-27 


If InitSprite() = 0 Or InitKeyboard() = 0 
  MessageRequester("Error", "Can't open DirectX 7 or later", 0) 
  End 
EndIf 


Global HeldX=100 
Global HeldY=100 
Global hoch=150 
Global Richtung=1 
Global Sprung=0


Procedure Held() 
  ;/ Held bewegen
  If KeyboardPushed(#PB_Key_Left) 
    HeldX-10 
    If HeldX<20 
      HeldX=630 
    EndIf 
  EndIf 
  If KeyboardPushed(#PB_Key_Right) 
    HeldX+10 
    If HeldX>620 
      HeldX=-10 
    EndIf 
  EndIf 
  
  ;/ WandAbfrage für's Fallen
  Wand=0 
  
  For i=0 To 9 ;/ Fußboden
    If SpriteCollision(0,HeldX,HeldY,1,0+64*i, 400) 
      Wand=1 
      DisplaySprite(2, 0+64*i, 400) 
    EndIf 
  Next  
  
   
  If SpriteCollision(0,HeldX,HeldY,1,264,Hoch) 
    Wand=2 
    DisplaySprite(2,264,Hoch) 
  EndIf 
  If SpriteCollision(0,HeldX,HeldY,1,328, 200) 
    Wand=1 
    DisplaySprite(2,328,200) 
  EndIf 
  If SpriteCollision(0,HeldX,HeldY,1,200, 200) 
    Wand=1 
    DisplaySprite(2,200,200) 
  EndIf
  
  For i=0 To  5 ;/ Leiter
    If SpriteCollision(0,HeldX,HeldY,3,170,210+32*i) 
      Wand=4  
    EndIf 
  Next 
  
  
   
  If Wand = 2 
    ziel = hoch - 30 
    If ziel < HeldY 
      HeldY - 1 
    ElseIf ziel > HeldY 
      HeldY + 1 
    EndIf 
  EndIf
  
  If Wand=0 
    HeldY+5 
  EndIf 
  
  
  If KeyboardPushed(#PB_Key_Up) And Sprung=0 And Wand>0 ;/ SPRUNG
    If Wand=4 ;/ Wenn Leiter
      Sprung=4
    Else
      Sprung=14 ;/ Anzahl der SprungEinheiten   
    EndIf
  EndIf 
  SprungDings=12;/ Größe der Sprungeinheiten, sollte größe 5 sein
  
  
  If Sprung>0
    If HeldY>30 
      HeldY-SprungDings 
    EndIf 
    Sprung-1 
  EndIf
  
  If KeyboardPushed(#PB_Key_Down) And Wand=4
    If HeldY<360 
      HeldY+10 
    EndIf 
  EndIf 
  
  
  DisplayTransparentSprite(0, HeldX, HeldY) 
EndProcedure 


Procedure Mauer() 
  
  ;/ oben Podest
  DisplaySprite(1, 200, 200) 
  DisplaySprite(1, 328, 200) 
  
  For i=0 To 5 ;/ Leiter
    DisplaySprite(3,170,210+32*i)
  Next
  
  For i=0 To 9 ;/ Weg unten
    DisplaySprite(1, 0+64*i, 400) 
  Next 
  
EndProcedure 


Procedure Beweg() ;/ Fahrstuhl
  hoch+1*Richtung 
  ;Debug hoch 
  If Hoch>400 
    Hoch=400 
    Richtung*-1 
  EndIf 
  If Hoch<150 
    Hoch=150 
    Richtung*-1 
  EndIf 
  
  
  DisplaySprite(1, 264, Hoch) 
  
  
EndProcedure 



If OpenScreen(640, 480, 16, "Sprite") 
  
  
  ;/ Erstelle Kreis auf Sprite, Held
  CreateSprite(0,32,32) 
  StartDrawing(SpriteOutput(0)) 
  Circle(15,15,15,RGB(255,128,128)) 
  StopDrawing() 
  
  ;/ Erstelle Balken auf Sprite 
  CreateSprite(1,64,4) 
  StartDrawing(SpriteOutput(1)) 
  Box(0,0,64,4,RGB(0,128,255)) 
  StopDrawing() 
  
  CreateSprite(2,64,4)  ;/ grüner Balken
  StartDrawing(SpriteOutput(2)) 
  Box(0,0,64,4,RGB(0,255,0)) 
  StopDrawing() 
  
  CreateSprite(3,32,32,#PB_Sprite_Texture) ;/Leiter
  StartDrawing(SpriteOutput(3))
  Box(0,0,5,32,RGB(255,128,0))
  Box(27,0,5,32,RGB(255,128,0))
  Box(0,6,32,5,RGB(255,128,0))
  Box(0,21,32,5,RGB(255,128,0))
  StopDrawing()   
  
  Repeat 
    ExamineKeyboard() 
    
    ; Hier werden die oben definierten Befehle (mit Procedure beginnen) aufgerufen
    Mauer() 
    Beweg() 
    Held() 
    
    
    Delay(10) 
    
    FlipBuffers() 
    ClearScreen(RGB(0,0,0)) ; Hintergrund ist schwarz
    
    
    
  Until KeyboardPushed(#PB_Key_Escape) ; Wiederhole bis Esc-Taste gedrückt wurde
  
Else 
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0) 
EndIf 

End   
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Mach ein Tuturial...und lege den Link hierher...sonst wird das bald unübersichtlich...wie vieles von Dir (Sorry).
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Verschachtelte IF-Abfragen

Beitrag von Xaby »

Hier soll einmal gezeigt werden, wie ein Dialog ablaufen könnte und wie eine Fragestellung je nach Antwort immer detailierter werden kann. Gleichzeitig soll der Umgang mit MessageRequestern demonstriert werden.
Das Ganze könnte auch mit Input-Eingaben in der Text-Console und freien Text-Antworten realisiert werden. Dann auch mit mehr als nur JA, NEIN, ABBRECHEN als Antwort-Möglichkeit.

Oder man nimmt Zahlen als Antwortmöglichkeiten.
1 zum Beispiel suptergut und 7 megaschlecht.

Das könnte man aber auch mit Gadgets realisieren und dann seinen Gemütszustand mit einem Schieberegler (TrackBargadget) einstellen.

Text-Adventure könnten so aufgebaut sein.

Code: Alles auswählen

; Folker Linstedt
; 2008-06-26
; JA oder NEIN für PureBasic-Nutzer


Name$=InputRequester("Frage 1","Wie heißt du?","PureBasic-Nutzer") ; Ein Fenster erscheint mit der Frage und Stefan wird als Antwort vorgeschlagen
; Der eingegebene Text wird in der Variable Name$ gespeichert. Sie ist eine Zeichenkette, da ein Dollar-Zeichen an ihr dran steht.

Ergebnis=MessageRequester("Frage 2","Geht es dir gut "+Name$+"?",#PB_MessageRequester_YesNo)

If Ergebnis=#PB_MessageRequester_Yes  ; Es geht ihm gut
  Gut=MessageRequester("Frage 3","Geht es dir suptergut "+Name$+"?",#PB_MessageRequester_YesNo)
  
  If Gut=#PB_MessageRequester_Yes ; supergut
    Gut=MessageRequester("Frage 4","Geht es dir oberaffenmäßigsupergeil "+Name$+"?",#PB_MessageRequester_YesNo)
    If Gut=#PB_MessageRequester_Yes
      Ausgabe$="oberaffenmäßigsupergeil"
    Else
      Ausgabe$="supergut"
    EndIf   
    
  Else ; nur gut
    Ausgabe$="gut"
  EndIf
  
  
Else
  Schlecht=MessageRequester("Frage 3","Geht es dir richtig schlecht "+Name$+"?",#PB_MessageRequester_YesNo)
  If Schlecht=#PB_MessageRequester_Yes ; richtig schlecht
    Ausgabe$="richtig schlecht"
  Else ; nur schlecht
    Ausgabe$="schlecht"
  EndIf
   
EndIf

MessageRequester("Dem "+Name$+" geht es:",Ausgabe$)
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Xaby

Bitte fasse das bei Gelegenheit zusammen und mach ein PDF draus,
das kann dann bestimmt auch auf die PureArea,
aber ein Thread mit nem Dutzend Beiträgen voller Codes wird wirklich schnell unübersichtlich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Gute Idee, werde ich machen, aber nicht demnächst.
Die nächsten zwei Wochen, diesen Thread bitte noch nicht in den Müll-Eimer verschieben.

Dank euch.
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich habe keine Veranlassung, der Thread zu vermüllen,
aber ich habe auch keine Veranlassung, ihn auf "wichtig" zu schalten,
solange er so unübersichtlich angelegt ist.

du kannst erstmal zusammenstellen, is ok,
und wenn du ein PDF draus gemacht hast,
kannst du das an die PureArea schicken,
und hier einen thread aufmachen wo es verlinkt wird,
der kann dann auch auf wichtig gestellt werden...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

So machen wir das :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Mach lieber eine einfache, aber übersichtliche HTML-Seite draus. PDF ist in der Internet-Welt ein einziger Störfaktor. Als Zusatz kein Problem, aber ich persönlich bin jedesmal genervt, wenn ich bestimmte Informationen nur als PDF angeboten kriege. Und ich denke mal, das geht anderen sicher auch so.

HTML ist schnell und funktioniert perfekt im Browser. PDF wird manchmal auch im Browser angezeigt, ist aber langsam, blöd zum Blättern/Scrollen, blöd zum Zoomen, die Shortcuts und Buttons des Browsers haben keinen Einfluß mehr, und manchmal kackt der Adobe-Reader ab. Meiner Meinung nach ist "PDF im Internet" eine echte Usability-Seuche :mrgreen:

Das nur mal so als Anmerkung... man sieht das mit den PDFs gerne zu stark aus der Sicht des Autors und zu wenig aus der des Nutzers.

Ansonsten, Respekt für Deine Mühen! Wenn Du das immer weiter ausweitest, könntest Du evtl. auch einfach 'ne Blogsoftware verwenden. Da hast Du es leicht, und der Nutzer kann problemlos damit umgehen.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten