Hallöchen, heute darf ich euch meinen AutoIt Picture viewer vorstellen:
Ich vermute mal, alle wissen was en picture viewer sein könnte
Hab das ganze mit Irrlicht umgesetzt,
das Skript ist jedoch relativ einfach gehalten:
Spoiler anzeigen
#include "au3Irrlicht2.au3"
#include<misc.au3>
#include<array.au3>
#include<file.au3>
#include<sound.au3>
HotKeySet("{ESC}", "_close")
hotkeyset("p", "_play")
Local $x = 20
Local $z = -15
Local $text[1000]
Local $node[1000]
local $music=true
Local $current = 1
If Not FileExists(@ScriptDir & "\bg.bmp") Then
MsgBox(0, "ERROR", "'\ParticleBlue.bmp' does not exist")
Exit
EndIf
Do
$path = FileSelectFolder("Chose your folder", "") & "\"
$pics = _FileListToArrayMultiSelect($path, "*.jpg;*.bmp;*.tga;*.png;*.gif", ";", 1)
Until ubound($pics)-1 < 1000 and ubound($pics)-1>0
_IrrStart($IRR_EDT_OPENGL, @DesktopWidth, @DesktopHeight, $IRR_BITS_PER_PIXEL_32, _
$IRR_WINDOWED, $IRR_SHADOWS, $IRR_capture_EVENTS, $IRR_VERTICAL_SYNC_ON)
$camera = _irraddcamera($x, 0, -15, $x, 0, -10)
_IrrSetWindowCaption("Autoit Picture Viewer")
For $i = 1 To UBound($pics) - 1
[/autoit] [autoit][/autoit] [autoit]$node[$i] = _IrrAddTestSceneNode()
_irrsetnodeposition($node[$i], $i * 20, 0, 0)
$text[$i] = _irrgettexture($path & $pics[$i])
_IrrSetNodeMaterialTexture($node[$i], $text[$i], 0)
_IrrSetNodeMaterialFlag($node[$i], $IRR_EMF_LIGHTING, $IRR_Off)
ToolTip($i & "/" & UBound($pics) - 1 & " loaded", 0, 0)
Next
$particleSystem = _IrrAddParticleSystemToScene($IRR_NO_EMITTER)
$SmokeEmitter = __CreateParticleSettings( _
- 50, -4, 4, _
50.0, 50.0, 50.0, _
0, 0, 0, _
10, 20, _
100, 100, 0, _
50, 255, 200, _
2000, 5000, _
1.0, 1.0, _
10.0, 10.0, _
1)
_IrrAddParticleEmitter($particleSystem, $SmokeEmitter)
_IrrAddParticleAttractionAffector($particleSystem, 2.0, 0.0, 2.0, 2.0, $IRR_ATTRACT)
$ParticleTexture = _IrrGetTexture(@ScriptDir & "\bg.bmp")
_IrrSetNodeMaterialTexture($particleSystem, $ParticleTexture, 0)
_IrrSetNodeMaterialFlag($particleSystem, $IRR_EMF_LIGHTING, $IRR_Off)
_IrrSetNodeMaterialType($particleSystem, $IRR_EMT_TRANSPARENT_VERTEX_ALPHA)
_irrsetnodeposition($particleSystem, $x, -10, 10)
SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
$soundopen= _soundopen(@scriptdir&"\bgmusic.mp3")
$sound= _soundplay($soundopen)
$music=true
While _IrrRunning()
If _IsPressed(27) And $x < ($i - 1) * 20 Then
Sleep(50)
$xold = $x
Do
$x += 1
_IrrSetNodePosition($camera, $x, 0, $z)
_IrrSetCameraTarget($camera, $x, 0, 0)
_irrsetnodeposition($particleSystem, $x, -10, 10)
_drawscene()
Until $x = $xold + 20
$current += 1
SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
ElseIf _IsPressed(25) And $x > 20 Then
Sleep(50)
$xold = $x
Do
$x -= 1
_IrrSetNodePosition($camera, $x, 0, $z)
_IrrSetCameraTarget($camera, $x, 0, 0)
_irrsetnodeposition($particleSystem, $x, -10, 10)
_drawscene()
Until $x = $xold - 20
$current -= 1
SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
ElseIf _IsPressed(28) And $z > -30 Then
sleep(50)
$z -= 1
_IrrSetNodePosition($camera, $x, 0, $z)
_IrrSetCameraTarget($camera, $x, 0, 0)
_irrsetnodeposition($particleSystem, $x, -10, 10)
ElseIf _IsPressed(26) And $z < -7 Then
sleep(50)
$z += 1
_IrrSetNodePosition($camera, $x, 0, $z)
_IrrSetCameraTarget($camera, $x, 0, 0)
_irrsetnodeposition($particleSystem, $x, -10, 10)
else
_drawscene()
EndIf
WEnd
Func _drawscene()
_IrrBeginScene(0, 10, 0)
_IrrDrawScene()
_IrrEndScene()
EndFunc ;==>_drawscene
Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
Local $FileList[1] = [0], $Filelist1, $iN, $Num, $search
$search = StringSplit($searchlist, $Separator)
If $search[0] > 0 Then
For $iN = 1 To $search[0]
$Filelist1 = _FileListToArray($dir, $search[$iN], $iFlag)
If Not @error Then
$Num = UBound($FileList)
_ArrayConcatenate($FileList, $Filelist1)
$FileList[0] = $FileList[0] + $FileList[$Num]
_ArrayDelete($FileList, $Num)
EndIf
Next
EndIf
Return $FileList
EndFunc ;==>_FileListToArrayMultiSelect
Func _close()
Exit
EndFunc ;==>_close
func _play()
If $music=true then
sleep(100)
$music=false
_SoundStop($soundopen)
elseif $music=false then
sleep(100)
$music=True
$sound= _soundplay($soundopen)
endif
endfunc
Dafür ist das Programm an sich, vom Style her , um so besser geworden.
[Blockierte Grafik: http://www.mediafire.com/imgbnc.php/780…729ff501e5g.jpg]
Den AutoIt Picture Viewer mit allen Dateien, die zur korrekten Darstellung (Partikelsystem+Hintergrundmusik) benötigt werden, liegt hier zum download bereit. Steuerung mit Pfeiltasten, Musik an/aus mit "P".
Viel Spaß beim Testen...
gruß billie
Edit: ganz wichtig: je mehr dateien ausgewählt werden/ je größer die dateien sind, desto länger ladet das programm am anfang