use FindBin qw($Bin); chdir($Bin); use lib $FindBin::Bin . '/LIBS'; use X; #in zusätzlichen sub dir "X", daher X:: #use SDL::X; my $container = X->new(); $GFXButton = X::GFXButton; $|=1; use SDL; use SDL::App; use SDL::Event; use SDL::Surface; use SDL::Color; use SDL::Rect; my $app = SDL::App->new(-width  => 730,-height => 430,-depth  => 16,); $event = new SDL::Event(); $img = SDL::Surface->new( -name => 'x.png' ); $img2 = SDL::Surface->new( -name => 'x_on.png' ); $img3 = SDL::Surface->new( -name => 'x_click.png' ); #Button hinzufügen...(test) for my $i (0..15) { for my $x (0..10) { $id++; $container->GFXButton_add($id,$app,(65*$x),(25*$i),$img,$img2,$img3, 'loslos'); }} while(1) {    #process event queue    $event->pump;    $event->poll;    my $etype=$event->type;    # handle user events    last if ($etype eq SDL_QUIT );    last if (SDL::GetKeyState(SDLK_ESCAPE));     ($active_element, $B_event_sub) = $container->checkall($event->button_x,$event->button_y);     if($etype eq SDL_MOUSEBUTTONDOWN && $active_element)     {          $active_element->button_down();          if($B_event_sub) {&{$B_event_sub}($active_element);};     }    #if ( $active_element )  { $active_element->set('PRESSED',1); };    if($etype eq SDL_MOUSEBUTTONUP) {$GFXButton->buttons_up($container);$GFXButton->destroy_buttons($container);} } #Button Event sub loslos {     my $self  = shift; my ($ID, $IMG ) = $self->get("ID", "IMG");     print "\n   $ID - $IMG   "; }