Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   нет реакции на код (http://www.flasher.ru/forum/showthread.php?t=66820)

KA-60 17.07.2005 18:31

нет реакции на код
 
Вложений: 1
Здравствуйте!
Сейчас я изучаю книгу ActionScript 2: программирование во Flash MX 2004. Для профессионалов Гурский ....и дошел до первого проекта-надо написать код определяющий движение мяча...в ходе изучения начал понимать,что на код реакции нету-то есть ввел координаты объектов-но при тестировании объекты остались на месте...почувствовав неладное-скопировал из примера весь код... и ноль реакции ....Я конечно из общества "очумелые ручки"...но увы не могу никак понять в чем проблема :o Единственное....сравнивая что получилось у меня с примером-нашел одно отличие-не знаю существенно ли оно-но...в общем посмотрите примеры:)я там обвел в чем разница...то есть при совершенно одинаковом коде...у меня ничего не работает-а в примере из учебника все нормально-так что если кто сможем мне объяснить в чем дело-буду весьма благодарен
Удачи всем.

KA-60 17.07.2005 18:32

Вложений: 1
вот как у меня...

Nirth 17.07.2005 18:44

а еще меньше нельзя было сделать чтоб вообще ничего видно не было

old_dark_elf 17.07.2005 19:35

:d нде...
хорошо у меня зрение хорошее :) - у тебя разница только в названии слоя, в котором написан скрипт, но это не влияет на его исполнение...

есть предположение, что ты используешь разные имена обьекта в скрипте и в сцене (например обьект назван баллс, а в скрипте используешь балл)...

KA-60 18.07.2005 00:37

Вложений: 1
дык я сделал большое разрешение...но файлик не влезал....даже если его заархивировать....самое смешное...я понимаю что может особой разницы Action или Actions нету...но в исходный файл-пример из учебник...вставил код простейший-на примере которого объясняется зачем все это нужно-и все заработало....стоит вставить в мой файл-все опять не работает...названия объектов....ball, contour и shade....вот код который должен получиться в итоге...

ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;
var X0 = -50;
var Y0 = 70;
var t = 0;
var a = 4;
var Vy = 0;
var Vx = 12;
var newX=null;
var newY=null;
var newV=null;
_root.onEnterFrame = function() {
if (ball._y>350) {
Vy = -newV*0.85;
Vx = 0.85*Vx;
t = 0.6;
X0 = newX;
Y0 = newY;
}
ball._y = Y0+Vy*t+a*t*t/2;
ball._x = X0+Vx*t;
contour._x = ball._x;
contour._y = ball._y;
contour._rotation += 23;
newV = Vy+a*t;
newY = ball._y;
newX = ball._x;
t += 0.6;
};

Сейчас понимаю что дело конечно же не в том как написано Action....а в названии идентификатора...Мне показалось что я нашел ошибку...ведь что я делал...выбирал необходимый слой-к примеру где мяч,жал на F8...выбирал тип Movie Clip писал имя "ball" и жал ОК...сейчас,я подумал что ошибка в том-что не поставил галочку Export ActionScript...поставил....и в поле identifer написал ball...только это не помогло...там еще одно поле не заполненным осталось AC 2.0 Class может туда тоже надо вписать что-нить?....скриншот терь в исправленном формате:)сорри за прошлые разы:)

Pigeon 18.07.2005 00:42

а это, случайно, не поэтому
Цитата:

Я пытаюсь изменить свойства _x / _y / ряд других компонента ComboBox, но ничего визуально не меняется! Трейс выводит, что все поменялось! Как быть?

Почитайте Using Components, главу Creating Components, и вам станет ясно, в чем дело. Компоненты версии 2 сильно инкапсулированы и всегда наследуют у одного из двух корневых классов: UIObject / UIComponent. При этом при изменении любого getter-setter-а перерисовка откладывается методом invalidate(), наследуемым у UIObject. Invalidate просто вызывает private метод, который заставляет компонент при следующей смене кадра перерисоваться, поэтому трейсы и выводят вам все, как вы хотите. Но есть одно большое НО: для таких сложных компонентов, как ComboBox, внутри проводится масса проверок и именно это сводит ваши действия на нет.

Выходов два: пользоваться методом move(), который есть у любого UI компонента, либо использовать листнеры и следить за событием draw (о нем можно посмотреть в хелпе, статья UIObject.draw).

old_dark_elf 18.07.2005 01:03

тебе нужно назвать "балл" обьект, который лежит в сцене, т.е. нажимаешь на символ, идешь в его свойства и пишешь в поле инстэнс нэйм "балл"...

MIX-er 18.07.2005 04:15

дааа... сильно...

KA-60 18.07.2005 14:41

мда...действительно сильно...............не там я его "обзывал"......терь все нормально....old_dark_elf спасибо:)
...Зато прочитав все написанное тут-вы поймете какие ж вы гении...на таком фоне:)))))))))))))

KUZEN 18.07.2005 19:42

на жёлтом фоне ... ужас ... ))))

KA-60 18.07.2005 20:58

Kuzen...ну не на голубом же:)

KUZEN 19.07.2005 12:00

каждому своё ... блин но жёлтый же просто глаза режет (((

KA-60 23.07.2005 00:51

Kuzen...согласен...а ты сам какой цвет используешь?


Но я не только из-за цвета пишу...опять все тот же баскетбольный мяч...я понимаю что опять что-то натворил-только не понимаю где...смысл вот в чем...при одинаковом коде...у меня мяч прыгает ...но его контур движется сам по себе...если этот же код вставить в пример(вернее из примера вставить ко мне)-все работает...контур на мяче.....код прилагается...И не понятно почему при одинаковом коде...два разных эффекта...

ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;
var X0 = -50;
var Y0 = 70;
var t = 0;
var a = 4;
var Vy = 0;
var Vx = 12;
var newX=null;
var newY=null;
var newV=null;
_root.onEnterFrame = function() {
if (ball._y>350) {
Vy = -newV*0.85;
Vx = 0.85*Vx;
t = 0.6;
X0 = newX;
Y0 = newY;
}
ball._y = Y0+Vy*t+a*t*t/2;
ball._x = X0+Vx*t;
contour._x = ball._x;
contour._y = ball._y;
contour._rotation += 23;
newV = Vy+a*t;
newY = ball._y;
newX = ball._x;
t += 0.6;
};

KA-60 23.07.2005 18:13

Не могу понять что происходит...и почему контур отдельно от мяча движется.....В книге (ActionScript 2: программирование во Flash MX 2004. Для профессионалов Гурский) создание кода для баскетбольного мяча объясняется очень подробно...для начала предлагается сопоставить мяч с его контуром в одной точке...

ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;

тут проблем не возникает-все работает...Далее предлагается создать простое движение мяча по горизонтальной оси...код следующий...

ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;
_root.onEnterFrame = function() {
ball._x += 2;
contour._y += 2;
};


и уже тут(не говоря уж о полном варианте кода,которые привел в сообщении выше) у меня ничего не получается -контур движется отдельно от мяча-почему такое может происходит и как это исправить?...а то к сожалению не удается понять в чем дело...

be_tween 24.07.2005 13:31

интересно, в книге тоже точно так же? потому что в таком виде
Цитата:

Сообщение от KA-60
{
ball._x += 2;
contour._y += 2;
};

они будут перемещаться в разных координатных плоскостях, а вот так
Цитата:

{
ball._x += 2;
contour._x += 2;
};
в одной.

KA-60 24.07.2005 13:45

be_tween нет-у них все верно написано...это у меня уже маразм:)я написал контуру y...и еще удивлюсь что он не идет по оси x:)осталось только понять почему полный код-который приводил выше не работает-поди снова где-то опечатка...или еще что в этом роде...

be_tween 24.07.2005 14:03

с полным кодом пока пас - пытался понять, что там к чему, но соображалки не хватило :) ... не исключено, у тебя опять какая-нибудь опечатка вкралась. тут уже если кто поопытней отзовется...

KA-60 24.07.2005 14:27

Я нашел где проблема, вот в этой строчке

contour._rotation +=23; как только я ее закомментарил-мяч с контуром попрыгали вместе,слившись в едином порыве:)Вопрос знатокам-почему же строка поворота контура вызывает такой вот эффект (отделение контура от мяча)?...На всякий случай привожу еще раз полный вариант кода...
ball._x = -50;
ball._y = 170;
contour._x = -50;
contour._y = 170;
var X0 = -50;
var Y0 = 70;
var t = 0;
var a = 4;
var Vy = 0;
var Vx = 12;
var newX=null;
var newY=null;
var newV=null;
_root.onEnterFrame = function() {
if (ball._y>350) {
Vy = -newV*0.85;
Vx = 0.85*Vx;
t = 0.6;
X0 = newX;
Y0 = newY;
}
ball._y = Y0+Vy*t+a*t*t/2;
ball._x = X0+Vx*t;
contour._x = ball._x;
contour._y = ball._y;
//contour._rotation +=23;
newV = Vy+a*t;
newY = ball._y;
newX = ball._x;
t += 0.6;
};

Штрек 25.07.2005 00:56

надеюсь ты не собираешься здесь
обсуждать все уроки из гурского.....
могу тебя заверить - все рабочие........
просто будь по внимательнееееееееееее.

KUZEN 25.07.2005 12:12

перед тем как тестировать проводи работу над ошибками )))

KA-60 25.07.2005 12:40

//contour._rotation +=23; да....я вижу что тут забыл убрать комментарий-но фишка в том-что убирая комментарий-контур начинает отдельно от мяча двигаться....Я понимаю что надо провести работу над ошибками-но я не понимаю где они...

KA-60 25.07.2005 12:59

Если сделать Check Syntax то ошибок в коде не находиться...опять таки-извиняюсь,что проглядел закомментаренную строчку...но может кто-нибудь скажет...почему строчка contour._rotation +=23; правильно не работает?

Штрек...а если и собираюсь?:)

KA-60 25.07.2005 13:17

добавил строчку ball._rotation += 23; и контур с мячом воссоединились...правда траектория была какая-то ужаленная и нервная...:)если уменьшить значение вращения до 4...то уже нормально..но опять таки...в примере все работает и без этой дополнительной строчки-тогда почему ж у меня так не получается?
Извиняюсь конечно за непонятливость...но...:)

dilsh 25.07.2005 13:34

почему бы тебе не взять просто пример и переделать его
и не мучаться
а так посмотри названия всех мувиков и кнопок
ты мог просто их не назвать правильно, помни что еще названия регистрочувствитиельны
вот это слово

KA-60 26.07.2005 18:06

dilsh так и сделаю...потому что понять в чем причина ошибки не могу...хотя хотелось бы-дабы ее не повторять в дальнейшем.Название мувиков проверял-все как в примере ....да и потом если бы я ошибся с названиями мувиков-то все бы не начинало работать если закомментарить строку contour._rotation +=23;


Часовой пояс GMT +4, время: 14:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.