TweenBase
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
คลาสเบียบาทอันทรงคุณค่าสำหรับในระหว่างการแปลงระหว่างมือของผู้ประมวลผล; คลาสพ่อของ Tween .
สรุป
คุณสมบัติ
สิ่งที่อ่านเท่านั้นที่แสดงสถานะปัจจุบันสำหรับอนิเมชัน Tween
วิธีการ
หยุดการเล่นและรีเซ็ตตัวแปรทวีนส์ หากคุณโทร TweenBase:Play() คุณสมบัติของ tween จะเริ่มต้นอินเทอร์โพลต่อไปยังจุดหมายปลายทางของพวกเขา แต่ใช้ความยาวของอนิเมชันเพื่อทำเช่นนั้น
หยุดการเล่นของ tween ไม่รีเซ็ตตัวแปรความคืบหน้าของ tween ซึ่งหมายความว่าหากคุณเรียก TweenBase:Play() จะเริ่มเล่นตั้งแต่ที่มันถูกหยุด
เริ่มเล่นของ tween หากเล่นแล้วเริ่มต้นแล้ว การโทร Play() ไม่มีผล ยกเว้น tween จะเสร็จสิ้นหรือถูกหยุด (โดย TweenBase:Cancel() หรือ TweenBase:Pause() )
อีเวนต์
เกิดขึ้นเมื่อ tween เสร็จเล่นหรือเมื่อหยุดด้วย TweenBase:Cancel()
คุณสมบัติ
PlaybackState
สมบัติที่อ่านเท่านั้นที่แสดงระดับปัจจุบันสำหรับอนิเมชัน Tween ดู Enum.PlaybackState สำหรับคำอธิบายของแต่ละสถานะ เปลี่ยนโดยใช้ฟังก์ชันเช่น Tween:Play()
ตัวอย่างโค้ด
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true
part.Parent = workspace
local goal = {}
goal.Orientation = Vector3.new(0, 90, 0)
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut, 2, true, 0.5)
local tween = TweenService:Create(part, tweenInfo, goal)
local function onPlaybackChanged()
print("Tween status has changed to:", tween.PlaybackState)
end
local playbackChanged = tween:GetPropertyChangedSignal("PlaybackState")
playbackChanged:Connect(onPlaybackChanged)
tween:Play()
วิธีการ
Cancel
หยุดการเล่นของ Tween และรีเซ็ตตัวแปรทวีคูณ
รีเซ็ตตัวแปรทวีคูณเท่านั้น ไม่รีเซ็ตค่าโดยทวีคูณ หากคุณยกเลิกการทวีคูณครึ่งทางผ่านแอนิเมชันของมัน ค่าจะไม่รีเซ็ตเป็นค่าเริ่มต้นของมัน ต่างจาก Class.TweenBase
ส่งค่ากลับ
ตัวอย่างโค้ด
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true
part.Parent = workspace
local goal = {}
goal.Position = Vector3.new(0, 50, 0)
local tweenInfo = TweenInfo.new(5)
local tween = TweenService:Create(part, tweenInfo, goal)
tween:Play()
task.wait(2.5)
tween:Cancel()
local playTick = tick()
tween:Play()
tween.Completed:Wait()
local timeTaken = tick() - playTick
print("Tween took " .. tostring(timeTaken) .. " secs to complete")
-- The tween will take 5 seconds to complete as the tween variables have been reset by tween:Cancel()
Pause
หยุดการเล่นของ tween ไม่รีเซ็ตตัวแปรความคืบหน้าของ tween ซึ่งหมายความว่าหากคุณเรียก TweenBase:Play() จะเริ่มเล่นตั้งแต่ที่มันถูกหยุด
หากคุณต้องการรีเซ็ตแปรความคืบหน้าของ tween ใช้ TweenBase:Cancel() .
คุณสามารถเลื่อนผู้ใช้ได้เฉพาะเด็กที่อยู่ใน PlaybackState
ส่งค่ากลับ
ตัวอย่างโค้ด
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true
part.BrickColor = BrickColor.new("Bright green")
part.Parent = workspace
local goal = {}
goal.Position = Vector3.new(50, 10, 0)
local tweenInfo = TweenInfo.new(10, Enum.EasingStyle.Linear)
local tween = TweenService:Create(part, tweenInfo, goal)
tween:Play()
task.wait(3)
part.BrickColor = BrickColor.new("Bright red")
tween:Pause()
task.wait(2)
part.BrickColor = BrickColor.new("Bright green")
tween:Play()
Play
เริ่มเล่นของ tween หากเล่นแล้วเริ่มต้นแล้ว การโทร Play() ไม่มีผล ยกเว้น tween จะเสร็จสิ้นหรือถูกหยุด (โดย TweenBase:Cancel() หรือ TweenBase:Pause() )
ผู้ใช้หลายคนสามารถเล่นได้บนเดียวกันในเวลาเดียวกัน แต่พวกเขาไม่สามารถแอนิเมชันสมบัติที่เดียวกันได้ หากผู้ใช้สองคนพยายามที่จะแก้ไขสมบัติเดียวกัน การแก้ไขครั้งแรกจะถูกยกเลิกและเข
ส่งค่ากลับ
ตัวอย่างโค้ด
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Color = Color3.new(1, 0, 0)
part.Anchored = true
part.Parent = game.Workspace
local goal = {}
goal.Position = Vector3.new(10, 10, 0)
goal.Color = Color3.new(0, 1, 0)
local tweenInfo = TweenInfo.new(5)
local tween = TweenService:Create(part, tweenInfo, goal)
tween:Play()
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true
part.Parent = game.Workspace
local tweenInfo = TweenInfo.new(5)
-- create two conflicting tweens (both trying to animate part.Position)
local tween1 = TweenService:Create(part, tweenInfo, { Position = Vector3.new(0, 10, 20) })
local tween2 = TweenService:Create(part, tweenInfo, { Position = Vector3.new(0, 30, 0) })
-- listen for their completion status
tween1.Completed:Connect(function(playbackState)
print("tween1: " .. tostring(playbackState))
end)
tween2.Completed:Connect(function(playbackState)
print("tween2: " .. tostring(playbackState))
end)
-- try to play them both
tween1:Play()
tween2:Play()
อีเวนต์
Completed
เกิดขึ้นเมื่อ tween เสร็จเล่นหรือเมื่อหยุดด้วย TweenBase:Cancel()
ส่ง Enum.PlaybackState ของ tween ไปยังฟังก์ชันที่เชื่อมต่อใด ๆ เพื่อให้เป็นเครื่องชี้วัดว่าทำไม tween จึงจบลง หมายเหตุว่าการเรียก TweenBase:Pause() ไม่ได้เรียกอีเวนต์
พารามิเตอร์
Player.PlaybackState ของ tween เมื่อเสร็จสิ้น
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local SLOW_DURATION = 10
local function slowCharacter(humanoid)
local goal = {}
goal.WalkSpeed = 0
local tweenInfo = TweenInfo.new(SLOW_DURATION)
local tweenSpeed = TweenService:Create(humanoid, tweenInfo, goal)
tweenSpeed:Play()
return tweenSpeed
end
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local initialSpeed = humanoid.WalkSpeed
local tweenSpeed = slowCharacter(humanoid)
tweenSpeed.Completed:Wait()
humanoid.WalkSpeed = initialSpeed
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true
part.Parent = game.Workspace
local tweenInfo = TweenInfo.new(5)
-- create two conflicting tweens (both trying to animate part.Position)
local tween1 = TweenService:Create(part, tweenInfo, { Position = Vector3.new(0, 10, 20) })
local tween2 = TweenService:Create(part, tweenInfo, { Position = Vector3.new(0, 30, 0) })
-- listen for their completion status
tween1.Completed:Connect(function(playbackState)
print("tween1: " .. tostring(playbackState))
end)
tween2.Completed:Connect(function(playbackState)
print("tween2: " .. tostring(playbackState))
end)
-- try to play them both
tween1:Play()
tween2:Play()
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 50, 0)
part.Anchored = true
part.Parent = workspace
local goal = {}
goal.Position = Vector3.new(0, 0, 0)
local tweenInfo = TweenInfo.new(3)
local tween = TweenService:Create(part, tweenInfo, goal)
local function onTweenCompleted(playbackState)
if playbackState == Enum.PlaybackState.Completed then
local explosion = Instance.new("Explosion")
explosion.Position = part.Position
explosion.Parent = workspace
part:Destroy()
task.delay(2, function()
if explosion then
explosion:Destroy()
end
end)
end
end
tween.Completed:Connect(onTweenCompleted)
tween:Play()