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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
program Diaporama;
{$FRAME_WIDTH 800}
{$FRAME_HEIGHT 600}
{$FRAME_RATE 10}
{-$JPEG photo1 'januar2013_1.jpg'}
{-$JPEG photo2 'januar2013_2.jpg'}
uses
Flash8;
const
SCALE = 1;
{ORG_X = 0;
ORG_Y = 0;}
ORG_X = 800 div 4;
ORG_Y = 600 div 4;
NOMBRE_PHOTOS = 2;
DELAI = 30; // 3 sec.
type
TDiaporama = class(MovieClip)
Index: Integer;
Compteur: Integer;
Image1: MovieClip;
Image2: MovieClip;
// le chargeur d'images
loader: MovieClipLoader;
// numéro d'image à charger
Index : Integer;
// juste pour le debug
log : TextField;
constructor Create;
// procedure onEnterFrame; override;
// les évènements du loader
procedure onLoadProgress(target_mc: MovieClip; loadedBytes, totalBytes: Integer);
procedure onLoadError(target_mc: MovieClip; ErrorCode: string; HttpStatus: Integer);
procedure onLoadComplete(target_mc: MovieClip; httpStatus: Integer);
end;
constructor TDiaporama.Create;
begin
inherited Create(_root, 'diaporama', _root.getNextHighestDepth);
Index := 1;
Compteur := 0;
_x := ORG_X;
_y := ORG_Y;
// on crée deux images
Image1 := MovieClip.Create(Self, 'image1', 1);
Image1._x := -150;
Image1._y := -150;
Image2 := MovieClip.Create(Self, 'image2', 2);
Image2._x := +150;
Image2._y := +150;
// pour le debug
Log := TextField.Create(Self, 'log', 3, 0, 0, 100, 100);
// le chargeur d'images
loader := MovieClipLoader.Create;
// lui dire de nous envoyer les évènements
loader.addListener(Self);
// chargement de la première image dans Image1
Index := 1;
loader.loadClip('januar2013_1.jpg', Image1);
end;
// dessin d'une barre de progression (non visible en local, c'est trop rapide)
procedure Progress(Image: MovieClip; width: Number);
begin
Image.moveto(100 , 180);
Image.lineto(100+width, 180);
Image.lineto(100+width, 220);
Image.lineto(100, 120);
Image.lineTo(100, 180);
end;
// pendant le chargement, afficher la barre de progression
procedure TDiaporama.onLoadProgress(target_mc: MovieClip; loadedBytes, totalBytes: Integer);
begin
target_mc.beginFill($ffffff);
Progress(target_mc, 200 * loadedBytes / totalBytes);
end;
// en cas d'erreur afficher dans log
procedure TDiaporama.onLoadError(target_mc: MovieClip; ErrorCode: string; HttpStatus: Integer);
begin
log.text := ErrorCode;
end;
// image lue, charger la suivante dans image2
procedure TDiaporama.onLoadComplete(target_mc: MovieClip; httpStatus: Integer);
begin
Inc(Index);
if Index = 2 then
loader.loadClip('januar2013_2.jpg', Image2);
end;
(*
procedure TDiaporama.onEnterFrame;
begin
if Compteur = 0 then // toutes les 3 sec.
begin
Image.Clear;
Image.attachBitmap(loadBitmap('photo'+IntToStr(Index)), 0);
Inc(Index);
if Index > NOMBRE_PHOTOS then
Index := 1;
end;
Compteur := (Compteur + 1) mod DELAI;
end;
*)
begin
with TDiaporama.Create do
begin
{_xscale := 100 * SCALE;
_yscale := 100 * SCALE;}
_xscale := 50 * SCALE;
_yscale := 50 * SCALE;
end;
end. |
Partager