AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Fehler AdDraw := TAdDraw.Create(self)
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler AdDraw := TAdDraw.Create(self)

Ein Thema von rABInsonCrusoe · begonnen am 19. Sep 2011 · letzter Beitrag vom 19. Sep 2011
Antwort Antwort
rABInsonCrusoe

Registriert seit: 19. Sep 2011
2 Beiträge
 
#1

Fehler AdDraw := TAdDraw.Create(self)

  Alt 19. Sep 2011, 23:03
Hey,

nach der langweiligen Schulinformatik habe ich mich mal an die Grafikprogrammierung gewagt, Andorra2d schien mir recht Einsteiger freundlich. Ich habe mich soweit erfolgreich durch die ersten beiden Andorra Tuts gearbeitet, bei dritten ist jedoch ein Fehler aufgetreten. Mir mangelt es noch an Erfahrung mit der Engine um den Fehler effektiv selbst zu bestimmen, vielleicht könnte ihr mir helfen Hier der Quelltext und der Fehler:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,AdSprites, AdSetupDlg, AdPerformanceCounter, AdDraws, AdClasses, AdTypes, AdComponents,
  ExtCtrls;
type
     TFigur = class(TImageSprite)
       private
       protected
         procedure DoMove(TimeGap:double);override;
       public
         XSpeed:integer;
         constructor Create(AParent:TSprite);override;
         procedure SetLine;
     end;

    
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    AdDraw:TAdDraw;
    AdPerCounter:TAdPerformanceCounter;
    AdImageList1:TAdImageList;
    AdSpriteEngine:TSpriteEngine;
    procedure Idle(Sender:TObject;var Done:boolean);
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
     path = './resources/';

implementation
{$R *.dfm}

constructor TFigur.Create(AParent:TSprite);
begin
inherited;
     X := 0;
     Y := 0;
     XSpeed := -150;
end;

procedure TFigur.SetLine;
begin
  XSpeed := -XSpeed;
     if XSpeed > 0 then
     begin
       AnimStart := 0;
       AnimStop := 7;
       X := -96;
     end
     else
     begin
       AnimStart := 8;
       AnimStop := 15;
       X := Engine.SurfaceRect.Right+96;
     end;
     Y := Random(round(Engine.SurfaceRect.Right-96));
end;

procedure TFigur.DoMove(timegap:double);
begin
     inherited;
    X := X + XSpeed*TimeGap;
     if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or
        ((X < -96) and (XSpeed < 0)) then
     begin
       SetLine;
     end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
AdSetupDlg:TAdSetup;
begin
  adpercounter:=TAdperformancecounter.create;
  AdDraw:=TAdDraw.Create(self); // HIER TRITT DER FEHLER AUF
  AdSetupDlg := TAdSetup.Create(AdDraw);
  AdSetupDlg.Image := 'boy.bmp';
  if AdSetupDlg.Execute then   
    begin
      if addraw.Initialize then
        begin
          application.OnIdle:=idle;
          adimagelist1.Create(addraw);
          with adimagelist1.Add('figur') do
            begin
              texture.LoadGraphicFromFile(path+'boy.bmp',true,clFuchsia);
              patternwidth:=96;
              patternheight:=96;
            end;
          adimagelist1.Restore;
          adspriteengine:=Tspriteengine.Create(nil);
          adspriteengine.Surface:=addraw;
          randomize;
          for i := 0 to 5 do
            begin
              with TFigur.Create(adspriteengine) do
                begin
                  image:=adimagelist1.find('figur');
                  animactive:=true;
                  animloop:=true;
                  xspeed:=-(random(100)+50);
                  AnimSpeed := Abs(XSpeed / 7.5);
                  SetLine;
                end;
            end;
            end
          else
            begin
              showmessage(addraw.GetLastError);
              halt;
            end;
            end;
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
     AdSpriteEngine.Free;
     AdImageList1.Free;
     AdPerCounter.Free;
     AdDraw.Free
end;

procedure TForm1.Idle(Sender:TObject;var Done:boolean);
begin
if addraw.CanDraw then
  begin
    adpercounter.Calculate;
    addraw.ClearSurface(clblack);
    addraw.BeginScene;
    adspriteengine.Move(adpercounter.TimeGap/1000);
    adspriteengine.draw;
    adspriteengine.Dead;
    addraw.EndScene;
    addraw.flip;
    done:=false;
  end;
end;
Jetzt noch schnell zum Fehler, Ihr seht ja oben wo es hängt. Wenn ich das Programm also ausführen will, erzählt er mir etwas von einer einfachen Zugriffsverletzung. In der TAdDraw Unit sieht man dann das es an der Zeile FParent := AAdDraw; liegt, wobei ich nicht weis was dieser Befehl bewirkt.

Vielen Dank im Vorraus für Eure Bemühungen und Hilfe, ich kanns wirklich gebrauchen
  Mit Zitat antworten Zitat
rABInsonCrusoe

Registriert seit: 19. Sep 2011
2 Beiträge
 
#2

AW: Fehler AdDraw := TAdDraw.Create(self)

  Alt 19. Sep 2011, 23:19
Steinigt mich nicht, hab den Fehler gefunden. War eher trivial
Meine Zeile:

adimagelist1.Create(addraw); .
.
Wie es richtig aussehen müsste:

adimagelist1:=tadimagelist.Create(addraw);

Geändert von rABInsonCrusoe (19. Sep 2011 um 23:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz