SoundChannel:setWorldPosition

From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Available since: Gideros 2016.10
Class: SoundChannel

Description

Sets the position of the sound in a 3D world.

SoundChannel:setWorldPosition(x,y,z,vx,vy,vz)

Parameters

x: (number) sound x coordinate
y: (number) sound y coordinate
z: (number) sound z coordinate optional
vx: (number) sound velocity x component optional
vy: (number) sound velocity y component optional
vz: (number) sound velocity z component optional

Example

local audioScale=0.02
local scrW,scrH=application:getContentWidth(),application:getContentHeight()
Sound.setListenerPosition(scrW*audioScale/2,scrH*audioScale/2,0,0,0,0,0,1,0,0,0,1)

local dot1 = Bitmap.new(Texture.new("1.png"))
dot1:setAnchorPoint(0.5, 0.5)

local dot2 = Bitmap.new(Texture.new("2.png"))
dot2:setAnchorPoint(0.5, 0.5)

local snd1=Sound.new("1.wav")
dot1.sndchn=snd1:play(0,true,true)
local snd2=Sound.new("2.wav")
dot2.sndchn=snd2:play(0,true,true)

local dots = {dot1, dot2}

local function onTouchesBegin(event)
	local dot = dots[event.touch.id]
	if dot then
		stage:addChild(dot)
		dot:setPosition(event.touch.x, event.touch.y)
		dot.sndchn:setWorldPosition(event.touch.x*audioScale, event.touch.y*audioScale)
		dot.sndchn:setPaused(false)
	end
end

local function onTouchesMove(event)
	local dot = dots[event.touch.id]
	if dot then
		dot:setPosition(event.touch.x, event.touch.y)
		dot.sndchn:setWorldPosition(event.touch.x*audioScale, event.touch.y*audioScale)
	end
end

local function onTouchesEnd(event)
	local dot = dots[event.touch.id]
	if dot and stage:contains(dot) then
		stage:removeChild(dot)
		dot.sndchn:setPaused(true)
	end
end

local function onTouchesCancel(event)
	local dot = dots[event.touch.id]
	if dot and stage:contains(dot) then
		stage:removeChild(dot)
		dot.sndchn:setPaused(true)
	end
end

stage:addEventListener(Event.TOUCHES_BEGIN, onTouchesBegin)
stage:addEventListener(Event.TOUCHES_MOVE, onTouchesMove)
stage:addEventListener(Event.TOUCHES_END, onTouchesEnd)
stage:addEventListener(Event.TOUCHES_CANCEL, onTouchesCancel)