4.4.10. Голосование

1. Создаём новый флэш-проект, называем его golosovanie. Устанавливаем размер сцены 150x400 пиксел. Первый кадр оставляет пустым, но в Action кадра определяем начальные параметры. Задаём массив номеров зачёток студентов, которые могут участвовать в голосовании, определяем переменные для каждой фамилии преподавателя. В первом кадре пишем код:


var avd :SharedObject = SharedObject.getLocal("avd");

var ban :SharedObject = SharedObject.getLocal("ban");

var bat :SharedObject = SharedObject.getLocal("bat");

var bor :SharedObject = SharedObject.getLocal("bor");

var bik :SharedObject = SharedObject.getLocal("bik");

var gal :SharedObject = SharedObject.getLocal("gal");

var laz :SharedObject = SharedObject.getLocal("laz");

var rgo :SharedObject = SharedObject.getLocal("rgo");

var tam :SharedObject = SharedObject.getLocal("tam");

var tit :SharedObject = SharedObject.getLocal("tit");

var che :SharedObject = SharedObject.getLocal("che");

var shf :SharedObject = SharedObject.getLocal("shf");


var n :SharedObject = SharedObject.getLocal("n");


var x :Array = new Array();


x[0]='000001'

x[5]='000002'

x[2]='000003'

x[3]='000004'

x[4]='000005'

x[5]='000006'

x[6]='000007'

x[7]='000008'

x[8]='000009'

x[9]='000010'

x[10]='000011'

// Значение массива x может быть любым


// Если значение свойства openCounter не определено − первое открытие

if (n.data.openCounter == undefined) {

n.data.openCounter = 1;

avd.data.openCounter = 0;

ban.data.openCounter = 0;

bat.data.openCounter = 0;

bor.data.openCounter = 0;

bik.data.openCounter = 0;

gal.data.openCounter = 0;

laz.data.openCounter = 0;

rgo.data.openCounter = 0;

tam.data.openCounter = 0;

tit.data.openCounter = 0;

che.data.openCounter = 0;

shf.data.openCounter = 0;

}


if (n.data.openCounter >= 100) {

gotoAndPlay(3);

}

xtab=5

avd_l._x=xtab;

ban_l._x=xtab;

bat_l._x=xtab;

bor_l._x=xtab;

bik_l._x=xtab;

gal_l._x=xtab;

laz_l._x=xtab;

rgo_l._x=xtab;

tam_l._x=xtab;

tit_l._x=xtab;

che_l._x=xtab;

shf_l._x=xtab;

2. Оформляем второй кадр. Нажимаем F7 (создаётся пустой новый кадр), вставляем текстовые поля с названием проекта, фамилиями преподавателей (на отдельном слое), как на рисунке ниже. Справа для каждой фамилии вставляем из панели Components кнопку Radio Button (серый кружок) cо следующими именами (сверху вниз): b_avd, b_ban, b_bat, b_bor, b_bik, b_gal, b_laz, b_rgo, b_tam, b_tit, b_che, b_shf, которые пишем на панели Properties. Под текстовым полем с фамилиями преподавателей вставляем пустое динамическое поле с именем mess (на панели Properties), еще ниже вставляем из панели Components (Ctrl+F7) Text Input с именем zachetka и Button с именем but1.

Далее вставляем текстовое поле "Результаты голосования" и кнопку "Посмотреть" с именем result.

Во втором кадре пишем следующий код:


clear();

mess.text='Введите № своей зачётки'

result.onRelease=function(){

gotoAndPlay(3);

}

but1.onRelease=function(){

for (i=0; i

if (zachetka.text==x[i]){

n.data.openCounter++

if (b_ban.selected){

ban.data.openCounter++

}

if (b_avd.selected){

avd.data.openCounter++

}

if (b_bat.selected){

bat.data.openCounter++

}

if (b_bor.selected){

bor.data.openCounter++

}

if (b_bik.selected){

bik.data.openCounter++

}

if (b_gal.selected){

gal.data.openCounter++

}

if (b_laz.selected){

laz.data.openCounter++

}

if (b_rgo.selected){

rgo.data.openCounter++

}

if (b_tam.selected){

tam.data.openCounter++

}

if (b_tit.selected){

tit.data.openCounter++

}

if (b_che.selected){

che.data.openCounter++

}

if (b_shf.selected){

shf.data.openCounter++

}

gotoAndPlay(3);

} //if

else {

mess.text='Вы не можете голосовать!'

}

}

}

stop();


3. Создаём 3-й кадр, в котором расположим результаты голосования. Располагаем на нём текстовое поле "Результаты голосования:", ниже − 12 динамических текстовых полей для каждого преподавателя из списка, расположенных справа от фамилий с именами на панели Properties (ngolosavd, ngolosban, ... , ngolosshf − слова красным цветом, как на картинке ниже). Слева от фамилий располагаем 12 копий пустого мувика, с именами avd_l, ban_l, ... , shf_l (имена выделены красным цветом). Затем вставляем текст "Количество проголосовавших" и справа − динамическое поле с именем ngolos.

В третьем кадре пишем такой код:


clear();

lineStyle(8, 0x035797);


koef=100/n.data.openCounter


ban_l._x=xtab+ban.data.openCounter*koef;

moveTo(ban_l._x,ban_l._y);

curveTo(ban_l._x,ban_l._y,xtab,ban_l._y);

ngolosban.text=Math.round(ban.data.openCounter*koef)+'%'


avd_l._x=xtab+avd.data.openCounter*koef

moveTo(avd_l._x,avd_l._y);

curveTo(avd_l._x,avd_l._y,xtab,avd_l._y);

ngolosavd.text=Math.round(avd.data.openCounter*koef)+'%'


bat_l._x=xtab+bat.data.openCounter*koef;

moveTo(bat_l._x,bat_l._y);

curveTo(bat_l._x,bat_l._y,xtab,bat_l._y);

ngolosbat.text=Math.round(bat.data.openCounter*koef)+'%'


bor_l._x=xtab+bor.data.openCounter*koef

moveTo(bor_l._x,bor_l._y);

curveTo(bor_l._x,bor_l._y,xtab,bor_l._y);

ngolosbor.text=Math.round(bor.data.openCounter*koef)+'%'


bik_l._x=xtab+bik.data.openCounter*koef;

moveTo(bik_l._x,bik_l._y);

curveTo(bik_l._x,bik_l._y,xtab,bik_l._y);

ngolosbik.text=Math.round(bik.data.openCounter*koef)+'%'


gal_l._x=xtab+gal.data.openCounter*koef

moveTo(gal_l._x,gal_l._y);

curveTo(gal_l._x,gal_l._y,xtab,gal_l._y);

ngolosgal.text=Math.round(gal.data.openCounter*koef)+'%'


laz_l._x=xtab+laz.data.openCounter*koef;

moveTo(laz_l._x,laz_l._y);

curveTo(laz_l._x,laz_l._y,xtab,laz_l._y);

ngoloslaz.text=Math.round(laz.data.openCounter*koef)+'%'


rgo_l._x=xtab+rgo.data.openCounter*koef;

moveTo(rgo_l._x,rgo_l._y);

curveTo(rgo_l._x,rgo_l._y,xtab,rgo_l._y);

ngolosrgo.text=Math.round(rgo.data.openCounter*koef)+'%'


tam_l._x=xtab+tam.data.openCounter*koef

moveTo(tam_l._x,tam_l._y);

curveTo(tam_l._x,tam_l._y,xtab,tam_l._y);

ngolostam.text=Math.round(tam.data.openCounter*koef)+'%'


tit_l._x=xtab+tit.data.openCounter*koef;

moveTo(tit_l._x,tit_l._y);

curveTo(tit_l._x,tit_l._y,xtab,tit_l._y);

ngolostit.text=Math.round(tit.data.openCounter*koef)+'%'


che_l._x=xtab+che.data.openCounter*koef

moveTo(che_l._x,che_l._y);

curveTo(che_l._x,che_l._y,xtab,che_l._y);

ngolosche.text=Math.round(che.data.openCounter*koef)+'%'


shf_l._x=xtab+shf.data.openCounter*koef;

moveTo(shf_l._x,shf_l._y);

curveTo(shf_l._x,shf_l._y,xtab,shf_l._y);

ngolosshf.text=Math.round(shf.data.openCounter*koef)+'%'


ngolos.text=n.data.openCounter


stop();


4. Запускаем ролик, голосуем за понравившегося преподавателя и смотрим результаты голосования.