llSetTextureAnim/zh-Hans

From Second Life Wiki
Jump to navigation Jump to search

Summary

Function: llSetTextureAnim( integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate );

Animate the texture on the specified face/faces by setting the texture scale and offset

• integer mode mask of Mode flags
• integer face face number or ALL_SIDES
• integer sizex horizontal frames (ignored for ROTATE and SCALE)
• integer sizey vertical frames (ignored for ROTATE and SCALE)
• float start Start position/frame number (or radians for ROTATE)
• float length number of frames to display (or radians for ROTATE)
• float rate frames per second (must not be zero)

start supports negative indexes. If face is ALL_SIDES then the function works on all sides. Frames are numbered from left to right, top to bottom, starting at 0.
If rate is negative, has the same effect as using the REVERSE flag.

Modes Description
ANIM_ON 0x01 启用贴图动画。
LOOP 0x02 循环贴图动画。
REVERSE 0x04 反向播放动画。
PING_PONG 0x08 先播放动画,然后再倒放。
SMOOTH 0x10 在 X 轴方向上平滑移动,代替播放单独的帧。
SCALEROTATE 模式中,都会平滑移动。
ROTATE 0x20 旋转贴图动画,
不要和 SCALE 一起使用。
SCALE 0x40 缩放贴图动画,
不要和 ROTATE 一起使用。

Caveats

  • If start is out of bounds the script continues to execute without an error message.
  • The function silently fails if its face value indicates a face that does not exist.
  • You can only have one texture animation on a prim
    • Calling llSetTextureAnim more than once on a prim will reset it.
  • You cannot combine ROTATE and SCALE
  • sizex & sizey are both limited to a range of 0 to 255
All Issues ~ Search JIRA for related Bugs

Examples

平滑移动一个贴图并且循环播放动画。

        llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, 1);

反向平滑移动一个贴图。

        llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, -1);

This divides a texture into 64 "cells", 8 across, and 8 down, and flips through them, left to right, top to bottom. This is useful for cell animation.

        llSetTextureAnim( ANIM_ON | LOOP, ALL_SIDES, 8, 8, 0, 64, 6.4 );

This rotates a texture counter-clockwise at 2 revolutions per second. Change the last value to -2*TWO_PI to rotate clockwise.

        llSetTextureAnim(ANIM_ON | SMOOTH | ROTATE | LOOP, ALL_SIDES,1,1,0, TWO_PI, 2*TWO_PI);

This scales a texture larger and smaller.

        llSetTextureAnim(ANIM_ON | SMOOTH | SCALE | PING_PONG | LOOP, ALL_SIDES, 1, 1, 1, 3, 2);

See Also

Articles

•  Negative Index

Deep Notes

Search JIRA for related Issues

Signature

function void llSetTextureAnim( integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate );