Schrift
[thread]8967[/thread]

kleine Warteanimation

Leser: 1


<< >> 6 Einträge, 1 Seite
RPerl
 2007-05-05 13:31
#76459 #76459
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo Leute,

ich hab mal wieder eine Frage und zwar hab ich schon oefters gesehen das manche Scripts eine kleine Warteanimation haben.
Sieht so aus:

[/] => [-] => [|] => [-] => [\]

natuerlich in einem Bild und immer wechselnd. Nun frag ich mich wie man sowas anstellt. Ich weiß, dass das etwas nonsense ist, aber mich interessiert es trotzdem *g*

also wenn jemand weiß, wie man sowas darstellt kann er ja mal seine Idee posten ^^

Danke,

Rperl\n\n

<!--EDIT|RPerl|1178357514-->
MisterL
 2007-05-05 14:30
#76460 #76460
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Eine Idee: die einzelnen Zeichen werden als Array gespeichert. Die einzelnen Indizes werden dann solange aufgerufen, wie das Hauptprogramm einen bestimmten Wert nicht erreicht hat.

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2007-05-05 14:50
#76461 #76461
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es gibt auch schon Module wie CPAN:Term::Progressbar, die einem da viel Arbeit abnehmen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2007-05-05 18:28
#76462 #76462
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Der Trick ist einfach ein
Code: (dl )
print "\r"
topeg
 2007-05-05 19:48
#76463 #76463
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ein kleines Belspiel wie man das machen kann. Ich benutze hier "fork" um die eigendliche Animation durch zu führen und "SIGUSR1" um einen Fortschrittsbalken zu realisieren.

Code (perl): (dl )
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
27
28
29
30
31
32
33
34
#!/usr/bin/perl
use strict;
use warnings;

my $guipid=fork();
unless($guipid)
{
  # GUI Läuft
  my @rotation=qw(/ - \ |);
  my $pos=0;
  my $del="\x08";
  $|=1;
  $SIG{USR1}=sub{ print $del,'.',$rotation[$pos]; };

  while(1)
  {
    print $del,$rotation[$pos];
    select(undef, undef, undef, 0.15);
    $pos++;
    $pos=0 if($pos >= @rotation);
  }
  exit(0);
}

# Programm läuft
for (0..10)
{
  kill('USR1',$guipid);
  sleep(2);
}
kill(1,$guipid);
waitpid($guipid,0);
print "\n";
exit(0);
RPerl
 2007-05-19 22:20
#76464 #76464
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Heftig. Sehr tricky, topeg! :D

Hab aber deinen code mal etwas angepasst:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;

unless(0)
{

  my @rotation = qw(/ - \ |);
  my $pos = 0;
  my $del = "\x08";
  $| = 1;
  sub { print $del,'.',$rotation[$pos]; };

  while(1)
  {
    print $del,$rotation[$pos];
    select(undef, undef, undef, 0.10);
    $pos++;
    $pos=0 if($pos >= @rotation);
  }
  exit(0);
}

exit(0);


dein code war so komplex
<< >> 6 Einträge, 1 Seite



View all threads created 2007-05-05 13:31.