반응형
Javascript로 GIF 애니메이션을 제어 할 수 있습니까?
자바 스크립트를 사용하여 GIF
이미지 의 어떤 프레임 이 표시 되는지 제어 하거나 애니메이션을 중지 할 수 있습니까? GIF
여러 프레임이 있는 a를로드하고 그중 하나만 표시 하고 싶습니다 .
많은 별도의 이미지로 할 수 있다는 것을 알고 있지만으로 원하는 것을 할 수 있다면 GIF
걱정할 파일이 하나뿐입니다.
CSS 스프라이트를 사용하여 단일 이미지로 할 수 있습니다 .
libgif 라이브러리를 사용할 수 있습니다 .
gif를 시작 / 중지하고 gif가있는 프레임을 제어 할 수 있습니다.
<script type="text/javascript" src="./libgif.js"></script>
<img src="./example1_preview.gif" rel:animated_src="./example1.gif"
width="360" height="360" rel:auto_play="1" rel:rubbable="1" />
<script type="text/javascript">
$$('img').each(function (img_tag) {
if (/.*\.gif/.test(img_tag.src)) {
var rub = new SuperGif({ gif: img_tag } );
rub.load(function(){
console.log('oh hey, now the gif is loaded');
});
}
});
</script>
(대부분의 코드는 예제에서 직접 가져온 것입니다)
저는 x-gif를 사용 합니다. 꽤 멋지고 설정하기 쉽습니다.
에서 Github에서 :
<x-gif src="probably_cats.gif"></x-gif>
다음을 속성으로 추가 할 수있는 위치 :
- 재생 모드 :
speed="1.0"
(기본 모드) 속도에 속성 값을 곱합니다.sync
재생을 외부 개체로 연기합니다.bpm="120"
주어진 분당 비트 수에 GIF를 동기화합니다.
옵션 :
stopped
GIF 애니메이션을 방지합니다.fill
GIF가 컨테이너를 덮도록 확장됩니다.n-times="3.0"
(속도 모드 전용) 설정된 횟수 후에 재생을 중지합니다 (중지 된 속성 추가).snap
(동기화 및 bpm 모드 만 해당) 긴 GIF를 여러 비트에 동기화하는 대신 하나에 만 맞도록 강제합니다.ping-pong
GIF를 앞뒤로 재생 한 다음 앞뒤로 재생합니다.
- 디버깅 :
debug
Gif Exploder의 디버그 출력을 켭니다.exploded
재생을 중지하고 각 프레임을 나란히 렌더링합니다.
gif를 스프라이트 시트로 변환해도 괜찮다면 다음과 같이 할 수 있습니다 (ImageMagick 사용).
montage animation.gif -coalesce -tile x1 -geometry +0+0 -background None -quality 100 spritesheet.png
새 이미지의 크기가 더 작아 질 가능성도 있습니다.
스프라이트 시트가 있으면 CSS 애니메이션을 사용하십시오. 프레임 시간이 고정 된 애니메이션이 여기에 사용됩니다.
var el = document.getElementById('anim');
function play() {
el.style.animationPlayState = 'running';
}
function pause() {
el.style.animationPlayState = 'paused';
}
function reset() {
el.style.animation = 'none';
el.offsetHeight; /* trigger reflow to apply the change immediately */
el.style.animation = null;
}
function stop() {
reset();
pause();
}
#anim {
background-image: url('https://i.stack.imgur.com/J5drY.png');
width: 250px;
height: 188px;
animation: anim 1.0s steps(10) infinite;
}
@keyframes anim {
100% { background-position: -2500px; }
}
<div id="anim" title="Animated Bat by Calciumtrice"></div>
<button onclick="play()">Play</button>
<button onclick="pause()">Pause</button>
<button onclick="reset()">Reset</button>
<button onclick="stop()">Stop</button>
애니메이션이 자동으로 시작되지 않도록 paused
하려면 animation
규칙 끝에 추가하십시오 .
참고 URL : https://stackoverflow.com/questions/2385203/can-you-control-gif-animation-with-javascript
반응형
'Programing' 카테고리의 다른 글
Swing Java에서 JFrame 모달을 만드는 방법 (0) | 2020.12.05 |
---|---|
'템플릿'에 대한 기반에서 파생 클래스로 'typedef'전파 (0) | 2020.12.05 |
새 노드가 DOM에 삽입 될 때 발생하는 jquery 이벤트가 있습니까? (0) | 2020.12.05 |
AsyncTask : doInBackground ()의 반환 값은 어디로 가나 요? (0) | 2020.12.05 |
stdout 및 stderr를 다른 변수로 캡처 (0) | 2020.12.05 |