User since
2006-12-14
2
Artikel
BenutzerIn
Hi!
Ich habe folgenden kleinen Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use strict;
use SDL;
use SDL::App;
use SDL::Event;
use SDL::TTFont;
use SDL::Color;
use SDL::Tool::Graphic;
my $app = SDL::App->new(
-title => 'myTE -> Developing...',
-width => 800,
-height => 600,
-depth => 16,
-flags => SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWACCEL,
);
my $back = SDL::Surface->new( -name => 'c.jpg' );
SDL::Tool::Graphic::zoom($back, 1, 1, 1);
$back->blit(0, $app, 0);
while (1) {
$app->sync();
$app->delay(100);
}
Nur bekomme ich beim Ausführen den Fehler:
SDL_Init 65535
ALSA lib pcm_dmix.c:819:(snd_pcm_dmix_open) unable to open slave
SDL::Tool::Graphic::zoom requires an SDL::Surface
Jetzt hab ich aber das Problem, dass $back 100%ig eine Surface ist :)
Wo liegt also der Fehler?
MFG jlorek
User since
2006-11-29
340
Artikel
BenutzerIn
Aber SDL::Tool::Graphic::zoom braucht auch noch ein Objekt:
sub zoom {
my ( $self, $surface, $zoomx, $zoomy, $smooth) = @_;
In deinem Fall könntest du es einfach so schreiben:
SDL::Tool::Graphic->new()->zoom($back, 1, 1, 1);
edit: nicht getestet!
MfG PerlProfi\n\n
<!--EDIT|PerlProfi|1166103066-->
User since
2006-11-29
340
Artikel
BenutzerIn
Da das Objekt sowieso keine Aufgabe hat, in dem Modul, geht es natürlich auch so, aber wenn du öfter mal Funktionen daraus verwendest, lohnt es sich ein Objekt zu erstellen, und die Methoden objektorientiert aufzurufen.
Nicht nur, weil du dann weniger schreiben musst, es sieht auch noch besser aus(finde ich).
MfG PerlProfi