찾다
CMS 튜토리얼Word누르다Paper.js 시작하기: 애니메이션 및 이미지

Paper.js 시작하기: 애니메이션 및 이미지

Sep 03, 2023 am 09:05 AM
시작하기 가이드paperjs애니메이션과 이미지

이 시리즈에서는 지금까지 Paper.js의 항목과 항목, 경로와 기하학, 사용자 상호 작용을 다루었습니다. 라이브러리를 사용하면 프로젝트의 다양한 항목에 애니메이션을 적용할 수도 있습니다. 이를 사용자 입력에 따라 작동하는 기능과 결합하면 정말 멋진 효과를 만들 수 있습니다. 이 튜토리얼에서는 Paper.js의 항목에 애니메이션을 적용하는 방법을 보여줍니다.

이 튜토리얼의 뒷부분에서는 이미지 처리와 개별 픽셀의 색상을 조작하는 방법도 다룹니다. 또한 라이브러리를 사용하면 벡터에서 래스터를 생성할 수 있으며 이에 대해서는 끝 부분에서 다룹니다.

애니메이션 기본지식

Paper.js의 모든 애니메이션은 onFrame이벤트 핸들러에 의해 처리됩니다. 핸들러 내의 코드는 초당 최대 60회 실행됩니다. 뷰는 각 실행 후에 자동으로 다시 그려집니다. 함수 내부의 일부 속성을 점차적으로 변경하면 매우 좋은 효과를 얻을 수 있습니다.

onFrame 处理函数还接收 event 핸들러 함수는 이벤트 객체도 수신합니다. 이 개체에는 애니메이션 관련 정보를 제공하는 세 가지 속성이 있습니다.

첫 번째는 event.count,它告诉我们处理程序执行的次数。第二个是 event.delta,它为我们提供了自上次执行处理程序以来经过的总时间。第三个是 event.time으로 첫 번째 프레임 이벤트 이후 경과된 시간을 알려줍니다.

핸들러에서 많은 속성에 애니메이션을 적용할 수 있습니다. 이 예에서는 세 개의 직사각형을 회전하고 중앙 직사각형의 색조를 변경하겠습니다. 다음 코드를 고려해보세요:

으아악

위의 코드 조각에서 알 수 있듯이 직사각형에 애니메이션을 적용하는 데 필요한 실제 코드는 거의 없습니다. 직사각형 A의 경우 onFrame 处理程序时将色调增加 10 倍 event.deltaevent.delta 핸들러가 실행될 때마다 색상이 10배 event.delta 증가합니다. event.delta의 값은 일반적으로 0.01에 가깝습니다. 그 값에 10을 곱하지 않았다면 색상 변화를 알아차리는 데 오랜 시간이 걸렸을 것입니다.

코드를 실행할 때마다 각 직사각형을 2도씩 회전시킵니다. event.time 값을 사용하여 직사각형을 회전하면 잠시 후 회전이 매우 빨라집니다.

전체 경로나 항목을 한 번에 애니메이션화하는 대신 개별 조각에 애니메이션을 적용할 수도 있습니다. 과정 자체는 매우 간단합니다. path.segments 返回构成路径的所有段的数组。可以通过提供 index 값을 사용하여 개별 세그먼트에 액세스할 수 있습니다. 더 진행하기 전에 아래 코드를 살펴보시기 바랍니다.

으아악

여기서 Path.RegularPolygon(center, Sides, radius) 构造函数创建一个正方形。 sides 参数确定多边形的边数。 radius 参数决定多边形的大小。我还将 completelySelected 属性设置为 true로 시작하므로 개별 포인트를 볼 수 있습니다.

onFrame 处理程序内,我使用 for 循环迭代所有段,并将它们的 x 坐标设置为等于基于其索引计算的值。在 Math.sin() 函数内使用 event.time 函数不会产生任何与极值相关的问题,因为 Math.sin() 的值不会产生任何与极值相关的问题。 sin() 핸들러 내에서 for 루프를 사용하여 모든 세그먼트를 반복하고 x 좌표를 인덱스를 기반으로 계산된 값과 동일하게 설정합니다. Math.sin() 함수 내에서

함수를 사용해도 극단값 관련 문제가 발생하지 않습니다. Math.sin() 아니요 극단값과 관련된 문제가 발생합니다. sin() 함수는 항상 -1과 1 사이입니다.

onFrame 处理程序中的代码。我建议您尝试为多边形构造函数以及 sin다음 데모는 애니메이션 사각형을 보여줍니다. 그런데 핸들러의 코드 덕분에 사각형은 더 이상 사각형이 아닙니다. 데모의 최종 애니메이션에 어떤 영향을 미치는지 확인하려면 다각형 생성자에 대한 다양한 값과 sin 함수에 대한 인수를 시도해 보시기 바랍니다.

이미지 기본

img 标签将其添加到网页的标记中,并为其指定 id。这个 id 随后被传递给 new Raster(id)Paper.js의 이미지를 래스터라고 합니다. 다른 아이템처럼 변형하고 이동할 수 있습니다. 프로젝트에서 이미지를 사용하려면 먼저 일반적인

생성자를 사용해야 합니다.

사용 중인 이미지는 로드되어야 하며 프로젝트와 동일한 웹사이트에서 호스팅되어야 한다는 점을 기억하세요. 다른 도메인에 호스팅된 이미지를 사용하면 보안 오류가 발생합니다. 이 튜토리얼에서는 다음 이미지를 조작합니다:

Paper.js 시작하기: 애니메이션 및 이미지

🎜

要访问上图中各个像素的颜色,您可以使用 栅格。 getPixel(x, y) 函数,其中 x 和 y 是像素的坐标。下面的代码生成 7*7 像素的正方形,填充位于左上角的像素的颜色:

var raster = new Raster('landscape');
var gridSize = 8;
var rectSize = 7;

raster.on('load', function() {  
  raster.size = new Size(80, 40);

  for (var y = 0; y < raster.height; y++) {
    for (var x = 0; x < raster.width; x++) {
      
      var color = raster.getPixel(x, y);
      var path = new Path.Rectangle( new Point(x, y) * gridSize, new Size(rectSize, rectSize));

      path.fillColor = color;
    }
  }

  project.activeLayer.position = view.center;
});

加载栅格后,我们将其大小调整为 80*40。像素。在嵌套的 for 循环内,我们遍历该栅格的各个像素并创建 7*7 的正方形。增加栅格的大小会给我们带来更好的结果,但执行速度会更慢。这是最终结果,调整后的光栅在左上角可见:

如果要隐藏调整大小后的栅格,可以将 raster.visible 属性设置为 false。您还可以操纵生成的方块的颜色。例如,要增加所有方块中的红色分量,您可以使用以下行:

path.fillColor = color + new Color(0.4,0,0);

在这种情况下,最终结果将是:

光栅化项目

虽然 Paper.js 是一个矢量图形库,但它还允许您从现有项目创建光栅。为此,您必须使用 item.rasterize() 方法。光栅化后,原始项目本身不会从项目中删除。您还可以选择指定光栅的分辨率(以每英寸像素为单位)。下面的代码以不同的分辨率从多边形创建两个栅格:

var aDodecagon = new Path.RegularPolygon(new Point(150, 180), 12, 30);
aDodecagon.fillColor = '#CCAAFC';
  
var dodecRasterA = aDodecagon.rasterize();
dodecRasterA.position.x += 250;
  
var dodecRasterB = aDodecagon.rasterize(150);
dodecRasterB.position.x += 500;
  
aDodecagon.scale(3);
dodecRasterA.scale(3);
dodecRasterB.scale(3);

与中间的相比,最右边的分辨率更高的多边形仍然很清晰。最终结果如下:

最终想法

如果您已阅读本系列中的所有教程,您应该拥有足够的知识来开始使用 Paper.js。虽然学习该库的基础知识很容易,但掌握所有概念将需要您付出一些努力。每当您需要有关某个主题的更多信息时,您可以浏览官方网站上的参考资料。

JavaScript 已成为事实上的网络工作语言之一。它并非没有学习曲线,而且还有大量的框架和库可以让您忙碌起来。如果您正在寻找其他资源来学习或在工作中使用,请查看我们在 Envato 市场中提供的资源。

如果您使用此库创建了一些有趣的东西,请在评论中分享您的作品。

위 내용은 Paper.js 시작하기: 애니메이션 및 이미지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
WordPress는 전자 상거래에 적합합니까?WordPress는 전자 상거래에 적합합니까?May 13, 2025 am 12:05 AM

예, WordPress는 전자 상거래에 매우 적합합니다. 1) WooCommerce 플러그인을 사용하면 WordPress는 완전히 기능적인 온라인 상점이 될 수 있습니다. 2) 성능 최적화 및 보안에주의를 기울이십시오. 캐시 및 보안 플러그인의 정기적 인 업데이트 및 사용이 핵심입니다. 3) WordPress는 사용자 경험을 향상시키고 SEO를 크게 최적화하기위한 풍부한 사용자 정의 옵션을 제공합니다.

Yandex 웹 마스터 도구에서 WordPress 사이트를 추가하는 방법Yandex 웹 마스터 도구에서 WordPress 사이트를 추가하는 방법May 12, 2025 pm 09:06 PM

웹 사이트를 Yandex Webmaster 도구에 연결 하시겠습니까? Google Search Console, Bing 및 Yandex와 같은 웹 마스터 도구를 사용하면 웹 사이트를 최적화하고 트래픽을 모니터링하고 Robots.txt를 관리하고 웹 사이트 오류 확인 등을 확인할 수 있습니다. 이 기사에서는 WordPress 웹 사이트를 Yandex 웹 마스터 도구에 추가하여 검색 엔진 트래픽을 모니터링하는 방법을 공유합니다. Yandex는 무엇입니까? Yandex는 Google 및 Bing과 유사한 러시아에 기반을 둔 인기있는 검색 엔진입니다. Yandex에서 탁월 할 수 있습니다

WordPress에서 HTTP 이미지 업로드 오류를 수정하는 방법 (간단함)WordPress에서 HTTP 이미지 업로드 오류를 수정하는 방법 (간단함)May 12, 2025 pm 09:03 PM

WordPress에서 HTTP 이미지 업로드 오류를 수정해야합니까? 이 오류는 WordPress에서 컨텐츠를 만들 때 특히 실망 스러울 수 있습니다. 일반적으로 내장 된 WordPress 미디어 라이브러리를 사용하여 이미지 또는 기타 파일을 CMS에 업로드 할 때 발생합니다. 이 기사에서는 WordPress에서 HTTP 이미지 업로드 오류를 쉽게 수정하는 방법을 보여줍니다. WordPress 미디어 업로드 중에 HTTP 오류의 이유는 무엇입니까? WordPress 미디어 업 로더를 사용하여 파일을 WO에 업로드하려고 할 때

WordPress에서 미디어 버튼 추가가 작동하지 않는 문제를 해결하는 방법WordPress에서 미디어 버튼 추가가 작동하지 않는 문제를 해결하는 방법May 12, 2025 pm 09:00 PM

최근에 독자 중 한 명이 WordPress 사이트의 미디어 추가 버튼이 갑자기 작동을 멈췄다 고보고했습니다. 이 고전적인 편집기 문제는 오류 나 경고가 표시되지 않으므로 사용자가 "미디어 추가"버튼이 작동하지 않는 이유를 알지 못합니다. 이 기사에서는 작동하지 않는 WordPress에서 미디어 추가 버튼을 쉽게 수정하는 방법을 보여줍니다. WordPress "Media Add"버튼이 작동하지 않도록 원인은 무엇입니까? 오래된 Classic WordPress 편집기를 사용하는 경우 미디어 추가 버튼을 사용하면 이미지, 비디오 등을 블로그 게시물에 삽입 할 수 있습니다.

WordPress 쿠키를 설정, 받기 및 삭제하는 방법 (전문가와 같은)WordPress 쿠키를 설정, 받기 및 삭제하는 방법 (전문가와 같은)May 12, 2025 pm 08:57 PM

WordPress 웹 사이트에서 쿠키를 사용하는 방법을 알고 싶습니까? 쿠키는 사용자 브라우저에 임시 정보를 저장하는 데 유용한 도구입니다. 이 정보를 사용하여 개인화 및 행동 타겟팅을 통해 사용자 경험을 향상시킬 수 있습니다. 이 Ultimate Guide에서는 전문가처럼 WordPressCookies를 설정, 받기 및 삭제하는 방법을 보여 드리겠습니다. 참고 : 이것은 고급 튜토리얼입니다. HTML, CSS, WordPress 웹 사이트 및 PHP에 능숙해야합니다. 쿠키는 무엇입니까? 쿠키는 사용자가 웹 사이트를 방문 할 때 생성 및 저장됩니다.

WordPress 429 너무 많은 요청 오류를 수정하는 방법WordPress 429 너무 많은 요청 오류를 수정하는 방법May 12, 2025 pm 08:54 PM

WordPress 웹 사이트에서 "429 너무 많은 요청"오류가 표시됩니까? 이 오류 메시지는 사용자가 웹 사이트 서버에 너무 많은 HTTP 요청을 보내고 있음을 의미합니다. 이 오류는 오류의 원인을 찾기가 어렵 기 때문에 매우 실망 스러울 수 있습니다. 이 기사에서는 "WordPress429ToOmanyRequests"오류를 쉽게 수정하는 방법을 보여줍니다. WordPress429에 대한 요청이 너무 많은 원인은 무엇입니까? "429toomanyRequests"오류의 가장 일반적인 원인은 사용자, 봇 또는 스크립트가 웹 사이트로 이동하려고 시도하기 때문입니다.

대형 웹 사이트의 CMS로서 WordPress는 얼마나 확장 가능한가?대형 웹 사이트의 CMS로서 WordPress는 얼마나 확장 가능한가?May 12, 2025 am 12:08 AM

WordPressCanhandlelArgeWebsites와 함께 확보 및 최적으로 최적화 된 경우 1) USECACHINGTOREDUCESERVERLOWN.2) 최적화 최적화

WordPress는 얼마나 사용자 정의 할 수 있습니까?WordPress는 얼마나 사용자 정의 할 수 있습니까?May 11, 2025 am 12:11 AM

WordPress는 매우 사용자 정의되어 있으며 다양한 유연성과 사용자 정의 가능성을 제공합니다. 1) 테마 및 플러그인 생태계를 통해 2) 프론트 엔드 개발에 RESTAPI를 사용하십시오. 그러나 사용자 정의에는 PHP, JavaScript, CSS 등과 같은 마스터 링 기술이 필요하며 잠재적 인 문제를 피하기 위해 성능 최적화 및 플러그인 선택에주의를 기울여야합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구