![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
Здравствуйте еще раз… скажу сразу, что в AS разбираться начинаю с нуля и методом тыка, приходится постоянно комментировать, поэтому коды могут показаться вам смешными, а вопросы непонятными, но попробую ?
Новый документ Слой (Layer1): рисую кружок, диаметр примерно 38… конвертирую в Button, задаю instance name – butt. Помещаю в нижний правый угол… Создаю четырехугольную звездочку… высота и ширина 38… конвертирую в MovieClip, instance name – kur. Выношу за пределы поля. В библиотеке создаю MovieClip, имя – kv, идентификатор – id_kv, в нем по центру рисую прямоугольник 40*40… прямоугольник конвертирую в MovieClip, name – klet… выделяю klet – пишу код: on (press) {//обрабатываем событие мувика нажатие мыши
koors = new Object(); //Создаем новый объект
koors.x = _x; //Задаем объекту переменную координат _х
koors.y = _y; //Задаем объекту переменную _у
localToGlobal(koors); // переводим координаты koors относительно мувика на координаты относительно главного поля
_root.kur._x = koors.x; // устанавливаю координату х звездочки
_root.kur._y = koors.y; // устанавливаю координату y звездочки
}
kur.swapDepths(16363); //Выставляю глубину курсора, чтобы курсор впоследствии находился НАД клетками а не ниже :)
//-------------------------------------------
butt.onPress = function() { // создаем функцию нажатия кнопки
for (bx=1; bx<3; bx++) { //создаем цикл (короче бх от 1 до 2 путем сложения)
for (by=1; by<3; by++) { //создаем цикл (короче бу от 1 до 2 путем сложения)
Field = attachMovie("id_kv", "kv"+bx+by, bx+by*2); //клонируем мувик kv и присваиваем ему имя "kv"+bx+by (плюс вроде устанавливаем глубину bx+by*2)
Field._x = (bx*40); // указываем координату х
Field._y = (by*40); // указываем координату у
}
}
};
//----------------------------------------
запускаем тест, жмем кнопку, получаем сгенерированное поле из 4 клеток… при нажатии на клетку, в клетку устанавливается курсор, она же наша звездочка А теперь собственно вопросы: 1. хочу убрать весь код из мувика klet оставить в нем только вызов к функции, убранный код хочу вписать в виде функции в слой Action (просто очень не удобно скакать по мувикам когда код нужно изменить) – сам вопрос: как правильно сделать функцию в слое Action и обращение к ней из мувика klet? 2. Как сделать перемещение курсора kur? В смысле что бы курсор переезжал из начальной клетки в клетку по которой щелкнул мышкой… Пока все… заранее благодарен |
|
|||||
|
1.
Потом вызываешь функцию в любом действии например:
Если ты не используешь в функции замены стандартных переменных то оставляй скобки пустыми после вызова функции. 2. СДелай в каком-нить мувике действие (не в кадре мува а на нем) Так будет курсор в квадратик перемещаться. Ты конечно понял что новые "х" и "у" надо указывать из середины нажатой клеточки. |
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
Большое спасибо, особенно за ответ на второй вопрос...
С первым вопросом все равно остается проблемма... код, который был в мувике klet и стал функцией, не работает... а как сделать не знаю А и еще... Описанный код на второй вопрос можно ли затолкать в функцию? |
|
|||||
|
еще проще и правильнее:
запихни это все в первый кадр и убери все остальные скрипты - они ненужны. В аттаче исходник лежит с этим кодом, поможет тебе разобраться. _root.d - Dimention, размер поля, сколько на сколько. удаление обьекта не обязательно, так что строку delete myPoint можешь убить. Она служит только для того чтобы лишний мусор не оставался. _root.d = 5;
kur.swapDepths(Math.pow(_root.d,2)+1);
butt.onPress = function() {
for (bx=0; bx<_root.d; bx++) {
for (by=0; by<_root.d; by++) {
Field = attachMovie("id_kv", "kv_"+bx+"_"+by, bx+by*_root.d+1);
Field._x = bx*40;
Field._y = by*40;
Field.onPress = function(){
var myPoint:Object = {x:0, y:0};
this.localToGlobal(myPoint);
_root.kur._x = myPoint.x;
_root.kur._y = myPoint.y;
delete myPoint;
}
}
}
}
Butt = задница. Цитата:
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
Гыыы... Спасибо Вам огромедное
![]() |
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
про исходник, у мну MX 2004 Prof 7.0 не открывает его... "unexpeсted file format"
![]() |
|
|||||
|
у мемя Flash 8 чего и вам советую, в нем много нового, одни фильтры чего стоят.
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
|
Ничего подобного! Если человек конечно именно для себя делает флешку тогда 8 - супер! А я вот делаю для людей а у некоторых эта апплет-система установки флеплейера 8 идет боком и не пашет! Тогда они с 7 или 6 сидят флешплейером! А я делаю на 6 макромедия. КОнечно мне приходиться попотеть чтобы без помошников (фильтры, помошник кода) делать флешки, зато оно того стоит. Я никого не осуждаю за вашу версию макромедия, просто оспариваю дурное мнение об "устаревшей" 6 макромедии.
Во нафлудил а. ![]() |
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
Еще раз спасибо вам обоим, если вы не против, то попозже у мну есть желание закоментировать описанный выше код... щас просто буду эксперементировать с перемещением курсора
|
|
|||||
|
Регистрация: Apr 2006
Сообщений: 11
|
Здраствуйте, Usnul и Minastis возпользовался вашим кодом, слегка подправил и кой че добавил, затем закоментировал...
_root.d = 4; //задаем переменную равную 4
speed = 10; //Создаю переменную обозначающую скорость равную 10(именно десять только для того чтобы начальные и конечные координаты совпадали)
kur.swapDepths(Math.pow(_root.d, 2)+1); // устанавливаю глубину курсора (через округление, я так понял)
butt.onPress = function() { // объявляю событие при нажатии на кнопку Батт :)
for (bx=0; bx<_root.d; bx++) { //создаю цикл установки координат по х, конкретно бх от 0 до переменной _root.d (5) путем сложения
for (by=0; by<_root.d; by++) { //создаю цикл установки координат по у, конкретно бу от 0 до переменной _root.d (5) путем сложения
Field = attachMovie("id_kv", "kv_"+bx+"_"+by, bx+by*_root.d+1); // создаем клетку,
Field._x = 20+(bx*40);//устанавливаем клетку по координате х (20 нужно, что бы клетка не вылезала за край поля)
Field._y = 20+(by*40);//устанавливаем клетку по координате у (20 нужно, что бы клетка не вылезала за край поля)
Field.onPress = function() { //объявляю событие при нажатии на клетку
var myPoint:Object = {x:0, y:0}; //объявляю переменную муПоинт как объект с координатами х=0, у=0
this.localToGlobal(myPoint); //перевожу координаты в клетке на главные координаты
//_root.kur._x = myPoint.x; // устанавливаю координаты курсора по х
//_root.kur._y = myPoint.y; // устанавливаю координаты курсора по у
bx = myPoint.x;
by = myPoint.y;
//delete myPoint; //отключенно ибо неизученна :)
};
}
}
kur._x = 20; //устанавливаю курсор в первой клетке по х
kur._y = 20; ////устанавливаю курсор в первой клетке по х
};
_root.onEnterFrame = function() {
if (kur._x<bx) {
kur._x += speed;
}
if (kur._x>bx) {
kur._x -= speed;
}
if (_root.kur._y<by) {
_root.kur._y += speed;
}
if (_root.kur._y>by) {
_root.kur._y -= speed;
}
};
Заранее Благодарен. ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|