emitsound stopen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

meik sauss

Betreff: emitsound stopen

BeitragSo, Aug 05, 2012 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo BBforum!!
ich habe ein wenig mit blitz3d programmiert, mein problem ist, ich habe mit load3dsound eine musik geladen.
Den listener habe ich auch geladen.
Das programm soll nun so laufen das man den ersten cube mit der camera berührt dann spielt musik das läuft auch, dann soll man wenn man will den zweiten cube berühren der soll die musik stoppen. Ich habe es mit stopchannel(musik) versucht aber ich bekomme immer die selbe fehlermeldung (memory access violation) .ich glaube das der speicher überläuft,weil der teil mit stopchannel im hauptprogramm steht.

bitte helft mit!! ich habe schon andere programme geschrieben um herauszufinden ob es an meinem code liegt, aber bei anderen programmen ist es das selbe problem.

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,2
SetBuffer BackBuffer()

HidePointer


Global musik
Global a=1
Global b=1
Global w#


Global cam=CreateCamera(man)
PositionEntity cam,0,1,-5
EntityType cam,1
licht=CreateLight(2,cam)

Dim sparks(80)
Global time=8000+MilliSecs()
Const total_sprites=80      ;Total number of sprites
Global fi#=.2


Type sprite_type
   Field x#,y#       ;Position
   Field vx#,vy#    ; Velocity
   Field delay_time ; Delay
End Type

Global sprite.sprite_type


For d=1 To total_sprites
    sprite.sprite_type=New sprite_type
   sprite_pos()
   sprite\delay_time=Rnd(50)
Next



plane=CreatePlane()
tex=LoadTexture("C:\Program Files (x86)\Blitz3D\test help\commands\3d_examples\media\Chorme-2.bmp")
EntityColor plane,177,0,177
EntityTexture plane,tex
EntityAlpha plane,.9
EntityFX plane,1
EntityType plane,2


himmel=CreatePlane()
RotateEntity himmel,0,0,180
PositionEntity himmel,0,9,0
tex1=LoadTexture("C:\Program Files (x86)\Blitz3D\test help\commands\3d_examples\media\sky.bmp")
EntityTexture himmel,tex1
ScaleTexture tex1,90,90
EntityFX himmel,1


Global py=LoadMesh("C:\Users\Meik Sauss\Pictures\bilder BB\pyramide.b3d")
PositionEntity py,0,0,50
ScaleEntity py,0.05,0.05,0.05
EntityType py,2


Global py2=LoadMesh("C:\Users\Meik Sauss\Pictures\bilder BB\pyramide.b3d")
PositionEntity py2,0,0,25
ScaleEntity py2,0.05,0.05,0.05
RotateEntity py2,0,0,0
EntityType py2,2

Global mig=LoadMesh("C:\Users\Meik Sauss\Pictures\bilder BB\mig.b3d")
PositionEntity mig,-10,1,25
ScaleEntity mig,0.05,0.05,0.05
EntityType mig,2

Global stealth=LoadMesh("C:\Program Files (x86)\Blitz3D\Media\geometricks_models\stealth\stealth.3ds")
PositionEntity stealth,20,1,25
ScaleEntity stealth,0.01,0.01,0.01
EntityType stealth,2

Global cube=CreateCube()
texscreen=LoadTexture("C:\Users\Meik Sauss\Pictures\bilder BB\mat_screen_1.bmp")
PositionEntity cube,-7,0,50
EntityTexture cube,texscreen
ScaleEntity cube,0.5,0.5,0.5
EntityType cube,4

cube2=CreateCube()
PositionEntity cube2,20,0,50
EntityTexture cube2,texscreen
ScaleEntity cube2,0.5,0.5,0.5
EntityType cube2,5


light1=CreateLight(3)         ;Create Light
LightConeAngles light1,1,90    ;Adjust Light Cone Angle
PositionEntity light1,0,-1,50 ;Position light
LightColor light1,255,255,255  ;Full brightt white light
LightRange light1,100          ;Set light range
EntityParent light1,c_pivot    

spark=LoadSprite("C:\Program Files (x86)\Blitz3D\samples\Richard_Betson\Power_fountain_b\spark.bmp",1)  ;Load bitmap for sprite "1" colored
ScaleSprite spark,.7,.7          ;Scale the sprite a little smaller
If spark=0 Then End             ;If the sprite did not load function error


For i=1 To 80
   sparks(i)=CopyEntity(spark)    ;Make a copy of the sprite and color it
   EntityColor sparks(i),Rnd(255),Rnd(255),Rnd(255)
Next

FreeEntity spark

For more=-100 To 2000 Step 5
tree_sprite=LoadSprite("C:\Program Files (x86)\Blitz3D\samples\mak\castle\sprites\tree.bmp",7)
   HandleSprite tree_sprite,0,-1
   ScaleSprite tree_sprite,2,4
   PositionEntity tree_sprite,more,0,Rand(-100,100)
   SpriteViewMode tree_sprite,3
   EntityAutoFade tree_sprite,120,150
Next

For more=1 To 200 Step 5
tree_sprite=LoadSprite("C:\Users\Meik Sauss\Pictures\bilder BB\tree.bmp",7)
   HandleSprite tree_sprite,0,-1
   ScaleSprite tree_sprite,2,4
   PositionEntity tree_sprite,more,0,Rand(-100,200)
   SpriteViewMode tree_sprite,3
   EntityAutoFade tree_sprite,120,150
Next   


CreateListener(cam)
musik=Load3DSound("C:\Users\Meik Sauss\Music\Audials Recorde 4\Audials Recorded Music\DJ Antoine vs Timati Feat Lalenna - Welcome To St Tropez.mp3")


Collisions 1,2,2,2
Collisions 1,4,2,2
Collisions 1,5,2,2







Repeat
w#=w#+0.1
Cls

PositionEntity himmel,0,9,w#

TurnEntity mig,0,1,0
TurnEntity stealth,0,1,0


UpdateWorld

For sprite.sprite_type = Each sprite_type   ;Loop through each sprite type
   n=n+1    ;counter for sprites
   If sprite\delay_time=0  ;Check condition of delay until 0
      sprite\x#=sprite\x#-sprite\vx#   ;Subtract velocity from position
      sprite\vy#=sprite\vy#+.005      ;Velocity y +.005
      sprite\y#=sprite\y#-sprite\vy#  ;Subtract velocity from position
      If sprite\y<-.5 Then sprite_pos() ;Collision detection
         zz#=((Sin((n*2)*Pi)*sprite\x)) ;Add 3rd dimension to sparks based on x
         PositionEntity sparks(n),sprite\x-7,zz,sprite\y+45 ;Position sprite
      Else
         sprite\delay_time=sprite\delay_time-1 ;Subtract 1 from delay time
      EndIf
   Next

zz=2 ;reset
   n=0

    If KeyHit(3) ;key 2 for spark color toggle
   If on_off1=0
         For i=1 To 80
         EntityColor sparks(i),255,128,32 ;Set sparks color
         Next
         on_off1=1
      Else
         For i=1 To 80
         EntityColor sparks(i),Rnd(255),Rnd(255),Rnd(255)
         Next
         on_off1=0
      EndIf
   EndIf




   If KeyDown(205) Or JoyXDir()=1  Then TurnEntity cam,0,-1,0
   If KeyDown(203) Or JoyXDir()=-1 Then TurnEntity cam,0,1,0
   If KeyDown(208) Or JoyYDir()=1 Then MoveEntity cam,0,0,-0.1
   If KeyDown(200) Or JoyYDir()=-1 Then MoveEntity cam,0,0,0.1
   
mxs  =  MouseXSpeed()
      mys = MouseYSpeed()
      dest_xang# = dest_xang + mys
      dest_yang# = dest_yang - mxs
      xang# = xang#+((dest_xang#-xang#)/5)      
      yang# = yang#+((dest_yang#-yang#)/5)

      RotateEntity cam, xang#, yang#, 0
      MoveMouse 400,300

RenderWorld()
If EntityCollided(cam,4)  Then a=a-1
If a=0 Then EmitSound(musik,cube):EntityColor cube,0,255,0:EntityColor cube2,255,0,0
If EntityCollided(cam,5) Then StopChannel(musik):EntityColor cube2,255,255,255:EntityColor cube,255,255,255
Flip

Until KeyDown(1)



Function sprite_pos()
   sprite\x# =0    ;Set x width
   sprite\y# =3.55 ;Ser y height
   sprite\vx#=Rnd(.09)-Rnd(.09) ;Set velocity amount
   sprite\vy#=-.2+Rnd(.15)      ;Set velocity amount
End Function

~EDITIERT~

Zeilenumbrüche reduziert, Xeres.

Xeres

Moderator

BeitragSo, Aug 05, 2012 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte schreibe Fließtext und wenn möglich reduziere den Code auf das wesentliche, sonst machst du es den Leuten, die Helfen wollen, schwerer als nötig.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

meik sauss

BeitragSo, Aug 05, 2012 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werde es versuchen heist fließtext die zeilen so lang wie möglich? hier ist noch einmal der code, der teil wo das problem liegt.
Code: [AUSKLAPPEN]
If EntityCollided(cam,4)  Then a=a-1
If a=0 Then EmitSound(musik,cube):EntityColor cube,0,255,0:EntityColor cube2,255,0,0
If EntityCollided(cam,5) Then StopChannel(musik):EntityColor cube2,255,255,255:EntityColor cube,255,255,255

Xeres

Moderator

BeitragSo, Aug 05, 2012 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Fließtext heißt, du machst Zeilenumbrüche nur dann, wenn du einen Absatz abschließt...
Schreibe auf jeden Fall nicht alles in eine Zeile, zieh das ganze auseinander, so, dass man es lesen kann:
BlitzBasic: [AUSKLAPPEN]
If EntityCollided(cam,4) Then a=a-1

If a=0 Then
EmitSound(musik,cube)
EntityColor cube,0,255,0
EntityColor cube2,255,0,0
EndIf

If EntityCollided(cam,5) Then
StopChannel(musik)
EntityColor cube2,255,255,255
EntityColor cube,255,255,255
EndIf

Dann schau dir an, was EmitSound zurück gibt und benutze aussagekräftigere Variablennamen als "a".
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragMo, Aug 06, 2012 6:45
Antworten mit Zitat
Benutzer-Profile anzeigen
EmitSound gibt einen Wert zurück! Erst dies ist dein Channel und nur damit kannst du den Sound stoppen:

BlitzBasic: [AUSKLAPPEN]
Musik=LoadSound(...)
Kanal=EmitSound(Musik, Cube)
...
StopChannel Kanal
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

meik sauss

BeitragDi, Aug 07, 2012 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke das Programm läuft jetzt!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group