Getting Started
Welcome to the beginner's guide for the Newcar animation engine! With this guide, you can learn some of the fundamental concepts and knowledge about Newcar, including:
CarEngineAppSceneWidgetAnimation
These concepts will be explained in detail in future documents. This guide will help you to learn the basic usage of the Newcar animation engine.
Creating a Newcar Project
"To do a good job, an artisan needs the best tools."
First, make sure you have the following tools installed:
- Node.js
- A package manager, such as NPM, Yarn, or PNPM
- A modern code editor, such as VSCode, Webstorm
- A browser that supports WebAssembly compilation, here we recommend the latest versions of Firefox, Chrome, Edge
Newcar CLI
We provide a CLI tool to help you create a Newcar project quickly.
If you're using it for the first time, you need to install it globally.
$ npm install -g @newcar/cli$ yarn global add @newcar/cli$ pnpm add -g @newcar/cliThen, you can create a Newcar project by running the following command:
$ ncli create my-newcar-project
$ cd my-newcar-project
$ npm installVite CLI
We recommend using PNPM + Vite to create your project.
$ pnpm create vite my-newcar-project
$ cd my-newcar-project
$ pnpm installNext, install Newcar and CanvasKit-WASM packages.
$ pnpm add newcar
$ pnpm add canvaskit-wasmBasic Initialization
Add a <canvas> element to your HTML file for rendering.
<canvas width="1600" height="900" id="canvas"></canvas>Then, import Newcar and initialize the CarEngine object.
import * as nc from 'newcar'
const engine = await new nc.CarEngine().init('../node_modules/canvaskit-wasm/bin/canvaskit.wasm')In the code above, we imported newcar and named it nc. Then we created a CarEngine object and passed in the CanvasKit-WASM file we just installed.
Creating an Animation App
import * as nc from 'newcar'
const engine = await new nc.CarEngine().init('../node_modules/canvaskit-wasm/bin/canvaskit.wasm')
const app = engine.createApp(document.querySelector('#canvas'))We used CarEngine.createApp to create an animation instance and passed in the DOM object of <canvas>.
Creating a Scene and Adding Objects
import * as nc from 'newcar'
const engine = await new nc.CarEngine().init('../node_modules/canvaskit-wasm/bin/canvaskit.wasm')
const app = engine.createApp(document.querySelector('#canvas'))
const root = new nc.Circle(100)
const scene = nc.createScene(root)
app.checkout(scene)
app.play()First, we created a circle widget, which is a offical extension of basic widget. The constructor's first parameter of this subclass is the radius of the circle, which we set to 100.
Then, we created a Scene object and set the circle widget as the root widget of this scene. A scene can only have one root widget, but a root widget can have multiple child widgets, and these child widgets can have their own children, thus forming a tree structure for a scene.
Finally, we used the App.checkout method to switch to this scene and the App.play method to play the animation.
If you setup the project correctly, you will see a white circle on the screen, just like this.
Adding Animation
root.animate(nc.create().withAttr({ duration: 1 }))This method will add an animation named create to this root widget and set the animation start at the first time unit.
Congratulations! You have learned the basic usage of the Newcar animation engine. We will explain more deeply later. If you like our project, feel free to join us and contribute or give us a free Star on our Repository.
Change the attributes
In Newcar 1.0.0 and lower, you can set attributes with .[key], but In Newcar 2.x, we imported the reactive system, some type of attributes is Ref, so we need use .[key].value to change the value of some attributes.
For example, you defined a circle and you want to change its radius, you can code like followings.
const circle = new Circle(100)
circle.radius.value = 200
