Преобразование старого скрипта AS2 в AS3 - PullRequest
0 голосов
/ 13 января 2020

Я только что начал заниматься кодированием, но все еще учусь, и после поиска везде на прошлой неделе я сдался.

У меня есть старый скрипт AS2, который я скомпилировал из разных источников и создал часы отсчета для сайта друга. Теперь у меня проблема в том, что все мы знаем, что fla sh не будет поддерживаться в течение длительного времени и в настоящее время постепенно прекращается. Так как это может кто-то, пожалуйста, преобразуйте следующий код в AS3 или, возможно, в JavaScript.

Я пытался посмотреть таймеры обратного отсчета в AS3, но на всю жизнь я не могу понять это.

Я надеюсь, что кто-то может помочь мне направить меня в правильном направлении.

Заранее благодарю за помощь.

// set date variables
var year = 1961;
var month = 3; // (number -1 as zero indexed array)
var day = 28;
var hour = 16; // (24 hour)
var minute = 40;
var second = 0;
start = new Date(year, month, day, hour, minute, second);

function calcAge() {
var now = new Date();
var o = new Object();

o.calendar_years = now.getYear()-start.getYear();
o.calendar_months = now.getMonth()-start.getMonth();
o.calendar_days = now.getDate()-start.getDate();
o.calendar_hours = now.getHours()-start.getHours();
o.calendar_minutes = now.getMinutes()-start.getMinutes();
o.calendar_second = now.getSeconds()-start.getSeconds();

if (o.calendar_second<0) {
    o.calendar_second += 60;
    o.calendar_second--;
}
if (o.calendar_minutes<0) {
    o.calendar_minutes += 60;
    o.calendar_hours--;
}
if (o.calendar_hours<0) {
    o.calendar_hours += 24;
    o.calendar_days--;
}
if (o.calendar_days<0) {
    // Days need to be taken from first day of the month
    var nextmonth = new Date(now.getYear(), now.getMonth(), 32);
    o.calendar_days += 32-nextmonth.getDate();
    o.calendar_months--;
}
if (o.calendar_months<0) {
    o.calendar_months += 12;
    o.calendar_years--;
}
return o;
}

function getAge(){
age = calcAge();
years_txt.text = age.calendar_years;
months_txt.text = age.calendar_months;
day_txt.text = age.calendar_days;
hour_txt.text = age.calendar_hours;
mins_txt.text = age.calendar_minutes;
sec_txt.text = age.calendar_second;
}

var intervalID = setInterval( getAge, 1000 );

1 Ответ

0 голосов
/ 16 февраля 2020

Ваш код уже довольно близок к javascript, поскольку AS2 / AS3 основаны на ECMA Script и, следовательно, довольно переносимы.

Основная проблема заключается в том, что вы обновляете несколько текстовых объектов, которые не существовать.

Я изменил ваш код, поэтому он присваивает текст внутреннему HTML элемента div с id = "ageOutDiv".

Я также изменил имя функции getAge до outputAge , поскольку вы не возвращаете / «не получаете» значение.

// set date variables
var year = 1961;
var month = 3; // (number -1 as zero indexed array)
var day = 28;
var hour = 16; // (24 hour)
var minute = 40;
var second = 0;

var ageOutDiv = document.getElementById('ageOutDiv');

start = new Date(year, month, day, hour, minute, second);

function calcAge() {
  var now = new Date();
  var o = new Object();

  o.calendar_years = now.getYear()-start.getYear();
  o.calendar_months = now.getMonth()-start.getMonth();
  o.calendar_days = now.getDate()-start.getDate();
  o.calendar_hours = now.getHours()-start.getHours();
  o.calendar_minutes = now.getMinutes()-start.getMinutes();
  o.calendar_second = now.getSeconds()-start.getSeconds();

  if (o.calendar_second<0) {
      o.calendar_second += 60;
      o.calendar_second--;
  }
  if (o.calendar_minutes<0) {
      o.calendar_minutes += 60;
      o.calendar_hours--;
  }
  if (o.calendar_hours<0) {
      o.calendar_hours += 24;
      o.calendar_days--;
  }
  if (o.calendar_days<0) {
      // Days need to be taken from first day of the month
      var nextmonth = new Date(now.getYear(), now.getMonth(), 32);
      o.calendar_days += 32-nextmonth.getDate();
      o.calendar_months--;
  }
  if (o.calendar_months<0) {
      o.calendar_months += 12;
      o.calendar_years--;
  }
  return o;
}

function outputAge(){
  age = calcAge();
  var str = "";
  str+="Year: "+age.calendar_years+"<br>";
  str+="Month: "+age.calendar_months+"<br>";
  str+="Days: "+age.calendar_days+"<br>";
  str+="Hours:"+ age.calendar_hours+"<br>";
  str+="Minutes:"+age.calendar_minutes+"<br>";
  str+="Seconds:"+age.calendar_second;
  ageOutDiv.innerHTML=str;
}

var intervalID = setInterval(outputAge,1000);
<div id="ageOutDiv"></div>
...