A JavaScript program can create and change a canvas element
on an HTML page, allowing graphics and animation.
The script draws on the canvas. We can clear the canvas
with a call to clearRect, add text with fillText, and draw
graphics by drawImage. The drawImage is quite powerful,
allowing us to specify not only what image to draw, but
how we want to clip it. That is, we can show part of an
image on part of the canvas. We can thus show a tiled background
with a call to an array of sub-images. The screen
is split into squares with MAXROW rows and MAXCOL
columns, where each square contains a tile. The square size
is 32 × 32, while the canvas size is 480 × 640. As powers of
2, they divide by 32 evenly.
The code below shows how a tile, specified by an integer
number, can be copied from the image containing all tiles
onto the context associated with the main canvas.
var Row2Draw = Math.floor(tile/ItemsPerRow);
var Col2Draw = tile - Row2Draw * ItemsPerRow;
theContext.drawImage(allTiles,
Col2Draw*SQUARE_SIZE, Row2Draw*SQUARE_SIZE,
SQUARE_SIZE, SQUARE_SIZE,
c*SQUARE_SIZE, r*SQUARE_SIZE,
SQUARE_SIZE, SQUARE_SIZE);
Variables r and c represent the row and column within the
canvas. SQUARE_SIZE has the constant value of 32, and
ItemsPerRow has a constant value defined by the width of
the image of tiles divided by the SQUARE_SIZE. Thus, the
drawImage command says to copy from allTiles, using
Col2Draw and Row2Draw as the tile to copy, a sub-image of
size SQUARE_SIZE×SQUARE_SIZE, to the location specified by
c and r, up to the size SQUARE_SIZE×SQUARE_SIZE.
To erase a character, we do not want to use the clearRect
function, since it clears everything in the rectangle. Instead,
a call to drawImage with another canvas as the parameter
has the effect of erasing the character by drawing the background
over it, instead of erasing the background, too. The
second canvas is simply a copy of the main canvas, and is
not show on the web-page.
โปรแกรมจาวาสคริปต์ที่สามารถสร้างและเปลี่ยนแปลงองค์ประกอบผ้าใบบนหน้า HTML ช่วยให้กราฟิกและภาพเคลื่อนไหว. สคริปต์วาดบนผืนผ้าใบ เราสามารถล้างผ้าใบที่มีการเรียกร้องให้ clearRect เพิ่มข้อความที่มี fillText และวาดภาพกราฟิกโดยdrawImage drawImage มีประสิทธิภาพมากช่วยให้เราระบุไม่เพียงแต่สิ่งที่จะวาดภาพ แต่วิธีการที่เราต้องการที่จะคลิป นั่นก็คือเราสามารถแสดงส่วนหนึ่งของภาพในส่วนของผืนผ้าใบ เราจึงสามารถแสดงพื้นหลังกระเบื้องที่มีการเรียกร้องให้อาร์เรย์ย่อยภาพไป หน้าจอจะถูกแบ่งออกเป็นสี่เหลี่ยมที่มีแถว MAXROW และ MAXCOL คอลัมน์ที่แต่ละตารางมีกระเบื้อง ตารางขนาด32 × 32 ในขณะที่ขนาดผ้าใบ 480 × 640 ในฐานะที่เป็นอำนาจของ2 พวกเขาหารด้วย 32 เท่ากัน. รหัสด้านล่างแสดงให้เห็นว่ากระเบื้องระบุโดยจำนวนเต็มจำนวนสามารถคัดลอกจากภาพที่มีทั้งหมดกระเบื้องบนบริบทที่เกี่ยวข้องกับผ้าใบหลัก. var Row2Draw = Math.Floor (กระเบื้อง / ItemsPerRow); var Col2Draw กระเบื้อง = - Row2Draw * ItemsPerRow; theContext.drawImage (allTiles, Col2Draw * SQUARE_SIZE, Row2Draw * SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE, ค * SQUARE_SIZE, อาร์ * SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE); ตัวแปร r และ c เป็นตัวแทนของแถวและคอลัมน์ภายในผ้าใบ SQUARE_SIZE มีค่าคงที่ 32 และItemsPerRow มีค่าคงที่ที่กำหนดโดยความกว้างของภาพของกระเบื้องหารด้วยSQUARE_SIZE ดังนั้นคำสั่ง drawImage กล่าวว่าการคัดลอกจาก allTiles ใช้ Col2Draw และ Row2Draw เป็นกระเบื้องที่จะทำสำเนาภาพย่อยของSQUARE_SIZE ขนาด× SQUARE_SIZE ไปยังตำแหน่งที่กำหนดโดยคและอาร์สูงสุดถึงSQUARE_SIZE ขนาด× SQUARE_SIZE ได้. การลบ ตัวละครที่เราไม่ต้องการที่จะใช้ clearRect ฟังก์ชั่นเพราะมันล้างทุกอย่างในรูปสี่เหลี่ยมผืนผ้า แต่การเรียกร้องให้ drawImage กับผืนผ้าใบอีกเป็นพารามิเตอร์ที่มีผลของการลบตัวละครโดยการวาดพื้นหลังมากกว่านั้นแทนการลบพื้นหลังมากเกินไป ผ้าใบที่สองเป็นเพียงสำเนาของผ้าใบหลักและไม่แสดงบนหน้าเว็บ
การแปล กรุณารอสักครู่..

โปรแกรม JavaScript สามารถสร้างและเปลี่ยนผ้าใบองค์ประกอบ
บนหน้า ให้กราฟิกและภาพเคลื่อนไหว .
บทวาดบนผ้าใบ เราสามารถล้างผ้าใบ
กับการเรียก clearrect , เพิ่มข้อความกับ filltext และวาด
กราฟิกโดย drawimage . การ drawimage มีประสิทธิภาพมาก
ช่วยให้เราระบุไม่เพียง แต่สิ่งที่ภาพที่จะวาด แต่
วิธีที่เราต้องการให้ภาพนั้น คือว่า เราสามารถแสดงส่วนหนึ่งของ
ภาพในส่วนของผ้าใบ เราจึงสามารถแสดงกระเบื้องพื้น
ด้วยการโทรไปยังอาร์เรย์ของ ซับ ภาพ หน้าจอ
แบ่งออกเป็นสี่เหลี่ยมกับ maxrow แถวและคอลัมน์ maxcol
ที่แต่ละตารางมีกระเบื้อง
ขนาดตาราง 32 × 32 ขณะที่ ผ้าใบ ขนาด 480 × 640 . พลังของพวกเขา
2 หารด้วย 32 เท่ากัน .
โค้ดด้านล่างแสดงให้เห็นว่ากระเบื้องที่ระบุโดยจำนวนเต็ม
หมายเลขสามารถคัดลอกจากภาพที่มีทั้งหมดกระเบื้อง
บนบริบทที่เกี่ยวข้องกับพื้นที่หลัก คือ row2draw =
คณิตศาสตร์พื้น ( กระเบื้อง / itemsperrow var ) ;
col2draw = ไพ่ - row2draw * itemsperrow ;
thecontext . drawimage ( alltiles
col2draw square_size row2draw * , , * square_size square_size square_size
, , , square_size C * R * square_size square_size , square_size ) ;
,ตัวแปร R และ C แสดงแถวและคอลัมน์ใน
ผ้าใบ square_size ได้ค่าคงที่ของ 32 และ
itemsperrow ได้คงที่ค่ากำหนดโดยความกว้างของ
ภาพกระเบื้องแบ่งตาม square_size . ดังนั้น ,
drawimage คำสั่งว่าคัดลอกจาก alltiles ใช้
col2draw row2draw เป็นกระเบื้องและคัดลอก การย่อภาพขนาด square_size × square_size
,
ไปยังตำแหน่งที่ระบุไว้โดยC และ R ขึ้นกับขนาด square_size × square_size .
ลบตัวละคร เราไม่ได้ต้องการที่จะใช้ฟังก์ชั่น clearrect
เพราะมันล้างทุกอย่างในรูปสี่เหลี่ยมผืนผ้า แทน
เรียก drawimage กับอีกผืนผ้าใบเป็นพารามิเตอร์
มีผลลบตัวละครโดยการวาดฉากหลัง
มากกว่า แทนที่จะลบพื้นหลังด้วย
ผ้าใบที่สองเป็นเพียงสำเนาของพื้นที่หลักและจะไม่แสดงในเว็บ
หน้า .
การแปล กรุณารอสักครู่..
