Урок 16. Анимиране на фигури
В този урок ще се опитаме като използваме обекта Shape да анимираме и раздвижвам обектите в графичния прозорец.
С обектът Shape са възможни следните операции:
AddImage - добавяне на картинка с използване на името и
AddRectangle - добавяне на правоъгълник с определени размери
HideShape – скриване на фигурата
ShowShape - показване на фигурата
SetOpacity – създаване на прозрачност от 0 до 100
GetOpacity - връща стойността с която е определена прозрачността
Move – премества фигурата в указаната точка
Animate - анимира
Zoom - увеличава в диапазон от 0,1 до 10 пъти.
Задача Напишете програма, която показва правоъглълник като се променя неговата прозрачност.
rectangle = Shapes.AddRectangle(400, 300)
Shapes.Move(rectangle, 100, 50)
For i = 1 To 10
Shapes.ShowShape(rectangle)
Program.Delay(1000)
Shapes.HideShape(rectangle)
Shapes.SetOpacity(rectangle, 100 - i * 10)
Program.Delay(800)
EndFor
В този пример, ние сме вмъкнали фигура в графичния прозорец, като тя е определена като правоъгълник. За целта използване използваме операцията AddRectangle. След това преместваме правоъгълника / горния лев ъгъл/ в точка с координати 100, 50 и го показваме и с помощта на операциите ShowShape и HideShape операции. Променяме непрозрачността на правоъгълника като използваме операцията SetOpacity.
Използваме обектът Program и операцията Delay с която забавяме изпълнението на програмата в милисекунди, за да може да се реализира ефекта за ползване и скриване на фигурата.
При всяко изпълнение на тялото на цикъла потребителят вижа че прозрачността на правоъгълника се увеличава и накрая, на 10то появяване той е изчезнал, т.е. станал е напълно прозрачен.
Опитайте се като използвате ShowShape и HideShape да изведете фигура и приложете мигащия ефкт.
За целта ще използваме операцията Animate, като освен името на фигурата, посочваме точката до която трябва да се предвижи и времето за анимация в милисекунди:
Решение:
rectangle = Shapes.AddRectangle(150, 100)
Shapes.Move(rectangle, 125, 125)
FOR I=1 TO 10
Shapes.Animate(rectangle, 30 * I, 150, 5000)
ENDFOR
Тествайте програмния код. Ако искате да увеличите размера на фигурата добавете следния ред:
Shapes.Zoom(rectangle, 2, 2)
Задачата се решава със следния програмен код:
GraphicsWindow.Title = "Квадрати"
GraphicsWindow.Height = 350
GraphicsWindow.Width = 450
GraphicsWindow.PenWidth = 2
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Purple"
rectangle1 = Shapes.AddRectangle(100, 100)
Shapes.Move(rectangle1, 50, 80)
rectangle2 = Shapes.AddRectangle(100, 100)
Shapes.Move(rectangle2, 300, 80)
For i = 1 To 3
Program.Delay(1000)
Shapes.Zoom(rectangle1, i * 0.4, i * 0.4)
Shapes.SetOpacity(rectangle1, i * 5)
EndFor
Операцията Zoom намалява страната на квадрата, защото е първоначалната стойност на увеличението е число, по-малко от 1. Zoom има ниво от 0,1 до 10.
Ще решим задачата като създаваме фигурата с операция AddEllipse. Задаваме нейното първоначално положение с помощта на операция Move.
След това анимираме формата на топка с помощта на операция Анимация.
GraphicsWindow.Title = "Търкаляща топка"
Sball = Shapes.AddEllipse(100, 100)
Shapes.Move(Sball, 0, 340)
Shapes.Animate(Sball, 500, 340, 500)
Program.Delay(1000)
Опитайте се да върнете топката в началото състояние!
Ще трябва да добавите следния ред:
Shapes.Animate(Sball, 0, 340, 500)
Помислете как можем да накараме топката да подскача, а не само да се търкаля.
Създаваме форма с AddRectangle. За да завъртим и върнем фигурата в началната позиция трябва да я завъртим в една посока на 360 градуса, т.е. 12 пъти на 30 градуса.
GraphicsWindow.Title = "Въртене на фигура"
GraphicsWindow.BrushColor = "Purple"
rotateshape = Shapes.AddRectangle(150, 100)
Shapes.Move(rotateshape, 200, 150)
For i = 0 To 12
Shapes.Rotate(rotateshape, 30 * i)
Program.Delay(1000)
EndFor
Можем да създадем друг графичен обект и да реализираме движение върху него
Първо на четката присвояваме случайно генериран цвят, след това създаваме множество форми и местим фигурата, като увеличаваме пропорционално координатите Броят на изведените фигури е 20 колкото е крайната стойност на брояча, управляващ цикъла/.
GraphicsWindow.Title = "Илюзия с правоъгълници"
GraphicsWindow.Height = 500
GraphicsWindow.Width = 700
For i = 0 To 20
GraphicsWindow.PenWidth = 0.5
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
rectangle1 = Shapes.AddRectangle(i * 20, i * 10)
Shapes.Move(rectangle1, i * 10, i * 10)
EndFor
Задачи за самостоятелна работа:
1. Създайте програма в която топката подскача.
2. Създайте програма, в която топката се удря от стена.
3. Създайте движение на топка по въже.