2014-11-02 4 views
-1

Я использую скрипт для анимации маятника, найденного в Интернете. Теперь я хочу добавить кнопки для изменения любого из параметров маятника, объявленного глобальным. Я пытаюсь глобальная функция OnClick в HTML, но после нажмите анимацию disapeared ...Функция не меняет значение, и анимация исчезает

var pendulum = {mass: 100, length:500, theta: (Math.PI/2) - 0.05, omega: 0, alpha:0, J:0}; 
 

 
/* My changes... */ 
 
function changeBig(){ 
 
    pendulum = {mass: 100, length:100, theta: (Math.PI/2) - 0.05, omega: 10, alpha:0, J:0}; 
 
} 
 

 
function changeSmall(){ 
 
    pendulum = {mass: 100, length:100, theta: (Math.PI/2) - 0.05, omega: 1, alpha:0, J:0}; 
 
} 
 
/* My changes end */
canvas { 
 
    display:block; 
 
    margin:0px auto; 
 
    height:600px; 
 
    width:400px; 
 
    border:none; 
 
}
<canvas id="canvas" height="600" width="400"></canvas> 
 
<button onClick="changeSmall()">Small</button> 
 
<button onclick="changeBig()">Huge </button>

Так что я должен изменить, чтобы сделать эти кнопки работают, я имею в виду изменить омега здесь (как далеко маятник будет качаются?

+0

Мы не можем ответить, не зная ваш маятниковый код, который вы нашли. Дикая догадка: вы, вероятно, должны изменить свойство 'omega'' pendulum' и не перезаписывать его. –

+0

http://jsfiddle.net/bkanber/uvYw5/light/ это он. Я не хочу менять свойство, я хочу сделать маятник интерактивным с «пользователем», я. В этой цели я планировал сделать 4 кнопки с разными омегами. – Crawly

ответ

1

Вы не можете просто переписать pendulum объекта. Он используется во время анимации для изменения значений.

Простого исправления, чтобы изменить значение омеги с

function changeBig(){ 
    pendulum.omega = 10; 
} 

function changeSmall(){ 
    pendulum.omega = 1; 
} 

Все более активное участие потребует существенного рефакторинга кода.

+0

Этот работает. Спасибо за помощь :) – Crawly

Смежные вопросы