Разработка ЦОР для ИД во Flash

advertisement
«Разработка ЦОР для ИД во Flash»
Технология создания ЦОРа на установление
соответствия при помощи различного количества
линий. Метод drawLine
Данная технология позволяет освоить прием создания ЦОРа на
соединение объектов при помощи линий. При этом от одного объекта можно
провести одну, две и более линий (по желанию разработчика ЦОРа). В
отличие
от
урока,
опубликованного
ранее
(http://it-
n.ru/communities.aspx?cat_no=139369&d_no=221439&ext=Attachment.aspx?Id=
96513) в приеме для рисования линии используется метод drawLine.
Для того, чтобы провести линию необходимо от прямоугольной кнопки
протянуть курсор до одной из круглых кнопок.
Алгоритм разработки ЦОРа
1. Откройте новый документ Adobe Flash СS3 или более поздней версии.
При этом, если это CS4-CS5 выбираем Файл→Создать(Ctrl+N)→Файл
Flash (ActionScript2.0).
1
«Разработка ЦОР для ИД во Flash»
2. Рисуем прямоугольник. Выделяем его инструментом Выделение
Selection Tool (V) и преобразовываем в символ – тип клип. Задаем
созданному клипу имя (Instanse Name) buttons
3. Выделяем прямоугольник, преобразовываем его в символ – тип клип.
4. Двойным щелчком по клипу заходим внутрь символа. Копируем
содержимое первого кадра во второй и третий:
2
«Разработка ЦОР для ИД во Flash»
В первом кадре прописываем stop();
Во втором и третьем кадре слегка меняем цвет прямоугольника.
5. Выходим из символа, нажав синюю стрелку
6. Дублируем созданный прямоугольник, задав соответственно имена
(Instanse Name):
buttonINT
buttonFLOAT
7. Размещаем поверх клипов необходимые надписи. Выходим из символа,
нажав синюю стрелку.
8. Рисуем окружность и преобразовываем ее в символ тип – клип, задаем
имя (Instanse Name) answerButton_1
9. Копируем созданный символ и размещаем на сцене нужное количество
экземпляров, задав им соответственно имена (Instanse Name):
 answerButton_1
 answerButton_2
 answerButton_3
 answerButton_4
3
«Разработка ЦОР для ИД во Flash»
 answerButton_5 и т.д.
10.Импортируем необходимые изображения и размещаем их на рабочем
поле.
11.Добавляем поле с динамическим текстом и именем (Instanse Name)
result
12.Добавляем кнопку проверки со скриптом:
on (release) {
Проверка();
}
13.В кадр вставляем следующий скрипт:
//При изменении количества клипов в программе нужно менять только
первые строчки кода, которые выделены зеленым цветом.
var correctAnswers=[[1,3,7],[2,4,5,6]]; //Здесь задаются правильные
ответы в виде [[номера "кнопок до" для "кнопки от 1"],[номера
"кнопок до" для "кнопки от 2"]] Два одинаковых номера для
разных кнопок ставить нельзя
var
uncorrectAnswerText:String="<font
color='#ff0000'>Неверно!
Пробуй еще :)</font>"//Вывод сообщения Неверно! Пробуй еще :)
var
correctAnswerText:String="<font
:)</font>" //Вывод сообщения Верно! :)
//Кнопки ОТ
4
color='#00ff00'>Верно!
«Разработка ЦОР для ИД во Flash»
var
buttonsFrom:Array=[buttons.buttonINT,buttons.buttonFLOAT];
//Можно добавлять... Элемент должен лежать на поле с таким же
названием
//Кнопки ДО
var
buttonsTo:Array=[answerButton_1,answerButton_2,answerButton_3,
answerButton_4,answerButton_5, answerButton_6,
answerButton_7];
//Можно добавлять... Элемент должен лежать
на поле с таким же названием
//ДАЛЬШЕ ИДЕТ АЛГОРИТМ, КОТОРЫЙ ИЗМЕНЯТЬ НЕ НАДО
function associativeButton(button:MovieClip) {
button.selected=false;
button.onRollOver=function () {
this.gotoAndStop(2);
}
button.onPress=function () {
this.selected=true;
this.gotoAndStop(3);
}
button.onRelease=function () {
this.selected=false;
this.gotoAndStop(2);
}
button.onReleaseOutside=function () {
this.selected=false;
this.gotoAndStop(1);
5
«Разработка ЦОР для ИД во Flash»
}
button.onRollOut=function () {
this.gotoAndStop(1);
}
}
function selectiveButton(button) {
button.onMouseMove=function () {
if(drawFrom.x!=null&&drawFrom.y!=null) {
if(this.hitTest(this._parent._xmouse,this._parent._ymouse,true))
{
this.gotoAndStop(2);
}else{
this.gotoAndStop(1);
}
}else{
this.gotoAndStop(1);
}
}
}
buttons.buttonINT.n=1;
buttons.buttonFLOAT.n=2;
for (var asoc_buttons in buttonsFrom) {
buttonsFrom[asoc_buttons].n=asoc_buttons;
associativeButton(buttonsFrom[asoc_buttons])
}
for (var sel_buttons in buttonsTo) {
selectiveButton(buttonsTo[sel_buttons])
6
«Разработка ЦОР для ИД во Flash»
}
var graphs:MovieClip=createEmptyMovieClip("graphics",10);
buttons.swapDepths(15)
var drawList:Array=[];
var drawFrom={x:null,y:null,obj:null};
onMouseDown=function () {
var hitTestResult:MovieClip=getHitTest(buttonsFrom);
if(hitTestResult!=null) {
drawFrom={x:_xmouse,y:_ymouse,obj:hitTestResult};
var
graph:MovieClip=graphs.createEmptyMovieClip("graph"+drawList.len
gth,graphs.getNextHighestDepth());
drawList.push(graph);
//trace(hitTestResult)
}else{
drawFrom={x:null,y:null,obj:null};
}
}
onMouseUp=function () {
if(drawFrom.x!=null&&drawFrom.y!=null) {
var hitTestResult:MovieClip=getHitTest(buttonsTo);
if(hitTestResult!=null) {
if(hitTestResult.result==null) {
trace("hitTestResult.result is null")
hitTestResult.result={obj:drawFrom.obj.n,line_index:(drawList.length-1)}
drawLine(drawList[drawList.length1],drawFrom.x,drawFrom.y,hitTestResult._x,hitTestResult._y);
}else{
trace("hitTestResult.result not null");
7
«Разработка ЦОР для ИД во Flash»
removeLastLine(hitTestResult.result.line_index);
drawLine(drawList[drawList.length1],drawFrom.x,drawFrom.y,hitTestResult._x,hitTestResult._y);
hitTestResult.result={obj:drawFrom.obj.n,line_index:drawList.le
ngth-1}
}
trace("point num:
"+(hitTestResult._name.split("_")[1])+" set: "+drawFrom.obj.n+"
"+hitTestResult.result.obj)
}else{
removeLastLine();
}
//trace(hitTestResult);
drawFrom={x:null,y:null,obj:null};
}
}
function removeLastLine(index) {
if(isNaN(index)) {
trace("Remove Last Line")
drawList[drawList.length-1].removeMovieClip();
//drawList.pop();
}else{
trace("Remove Line At: "+index)
drawList[index].removeMovieClip();
//drawList.splice(index,1);
}
trace("l: "+drawList.length)
}
8
«Разработка ЦОР для ИД во Flash»
function getHitTest(array) {
for (var i in array) {
if(array[i].hitTest(_xmouse,_ymouse,true)) {
return array[i];
}
}
return null;
}
onMouseMove=function () {
if(drawFrom.x!=null&&drawFrom.y!=null) {
drawLine(drawList[drawList.length1],drawFrom.x,drawFrom.y,_xmouse,_ymouse)
}
}
function drawLine(obj,x1,y1,x2,y2) {
obj.clear();
var colors_array=[0xFF0000, 0xFF6600] //Здесь задается цвет
линий, которые будут рисоваться. Если будет третья группа
линий, то необходимо через запятую указать их цвет и т.п.
obj.lineStyle(4,colors_array[drawFrom.obj.n],100);
obj.moveTo(x1,y1);
obj.lineTo(x2,y2);
return obj;
}
9
«Разработка ЦОР для ИД во Flash»
function Проверка() { //Функция проверка
for (var i=0;i<correctAnswers.length;i++) {
for (var j=0;j<correctAnswers[i].length;j++) {
trace(i+"
"+(buttonsTo[correctAnswers[i][j]-
1].result.obj))
if(i!=buttonsTo[correctAnswers[i][j]-1].result.obj) {
result.htmlText=uncorrectAnswerText
return;
}
}
}
result.htmlText=correctAnswerText
}
9. Нажимаем Ctrl+Enter - тестируем проект!
10. Публикуем в формате swf или exe.
В качестве примера использования данного приема во второй сцене
увеличено количество кнопок ОТ и ДО на 1, однако если создавать разные
ЦОРы, то стоит пользоваться рекомендациями по изменению скрипта из
п.12.
Так как в примере я использую приём в одном ЦОРе, то для
работоспособности скрипта были внесены более существенные изменения:
1. На первой сцене кнопке Перехода на 2 сцену был добавлен
скрипт:
on (release) {
play();
buttons._visible=false;
}
2. На второй сцене были внесены следующие изменения в скрипт:
10
«Разработка ЦОР для ИД во Flash»
 Кнопки ОТ – созданы на рабочем поле заново, а в скрипте
переименованы:
var
buttons2From:Array=[buttons2.buttonXRAN,buttons2.buttonVVOD,buttons2.b
uttonOBR];
 Кнопки ДО – добавлена 8 кнопка:
var
buttons2To:Array=[answerButton_1,answerButton_2,answerButton_3,answerButt
on_4,answerButton_5, answerButton_6, answerButton_7,answerButton_8];
 Правильные ответы
var correctAnswers=[[1,3,4,6],[2,5,7],[8]];
 Во всем алгоритме buttons было заменено на buttons2
 Добавлен цвет линии для третьей группы
var colors_array=[0x660000, 0x660000, 0x660000]
Успехов коллеги!
11
«Разработка ЦОР для ИД во Flash»
Источники:
Руководство по работе с Adobe Flash CS4 на русском языке
http://flash-world.ru/flash_tutorial/7-download_flash_cs4_help.html
Справочник по Actionscript 3 на русском языке
http://flash-world.ru/flash_tutorial/15-skachat_flash_actionscript_3_book.html
http://stepanenkoo.ucoz.ru/
Фон http://i012.radikal.ru/0712/01/d36a9c090409.jpg
Внешний жесткий диск
http://www.techdigest.tv/philips_SPD5130_1tb_esata_usb_external_hard_drive.jpg
DVD диск http://oxion.ru/assets/images/dvd/dvd-r/DVD-R%20Rozi.jpg
Микрофон http://ancheiopossoallenare.com/contenuti/wpcontent/uploads/2008/06/microfono1.gif
Мышка http://www.a4tech.ru/images/products/img/jpg/s1t12281h.jpg
Принтер http://tonerdirect.bg/images/hpljp1006w.jpg
Флешка http://desc.allshops.ru/images/207779.jpg
Жесткий диск http://www.ferra.ru/images/144/144686.jpg
Джойстик http://procomposites.com/FreedomProject/08_Controls/Fabrication/genx500.jpg
Процессор http://www.microchoix.com/M_images/trait110485.jpg
Трекбол http://pan3.fotovista.com/dev/3/3/46410033/g_46410033.jpg
Сканер http://regmedia.co.uk/2007/08/16/v500.jpg
Клавиатура
http://www.pc.deal.pl/foto/klawiatura_chicony_kbp_0401_black_silver.jpg
Монитор http://alt-tab.com.ar/wp-content/uploads/LG_22.jpg
Графический планшет http://www.nejlevnejsipocitace.cz/shop/images/29858.jpg
Колонки http://www.vobis.pl/foto.ashx?w=350&s=881678
Вэб-камера
http://images.logicbuy.com/datastore/userdeals/634001140434506130LogitechC250.jpg
12
Download