I'm not sure if this is what you are after but you could give the work to the animation system:
Lua Code:
local f = CreateFrame("Frame","AnimationByOnUpdate",UIParent)
f:SetSize(64,64)
local texture = f:CreateTexture(nil,"ARTWORK")
texture:SetAllPoints(true)
texture:SetTexture("Interface\\Icons\\INV_Misc_QuestionMark")
f:SetPoint("CENTER")
f.ag = f:CreateAnimationGroup()
f.ag:SetLooping("REPEAT")
local anim = f.ag:CreateAnimation("Translation")
anim:SetChildKey("Move1")
anim:SetOrder(1)
anim:SetDuration(20)
anim:SetSmoothing("IN_OUT")
anim:SetOffset(-200, 0)
f:SetScript("OnEvent", function(self) self.ag:Play() end)
f:RegisterEvent("PLAYER_ENTERING_WORLD")
Change SetSmoothing to "NONE" if you don't want the speed up/slow down at the beginning/end.