Просмотр полной версии : loadMovieClip + onPress - обязательно делать метки ???
Собственно вопрос - делаем пустой мувик, грузим в него PNG, потом добавляем к нему .onPress и ничего не происходит ... Собственно вопрос - обязательно рисовать в мувике квадрат или можно заставить его работать как-то целиком ? о надежде застваить работать только закрашенные области в транспарентном PNG я уже и спрашивать боюсь :)
---
Что имеется ввиду (для тех кто в банке) :
_root.createEmptyMovieClip("but_ad", _root.getNextHighestDepth());
var buttonLoader:MovieClipLoader = new MovieClipLoader();
buttonLoader.addListener(this);
buttonLoader.loadClip("add.png", _root.but_ad);
_root.but_ad.onPress = function() {
//функция для кнопки
};
т.е. можно ли :
1) Наш мувик заставить откликаться на onPress не рисуя в нём какой-нить шейп ?
2) Можно ли заставить его откликаться только там где наш PNG закрашен опять-же ничего не рисуя ?
1. Можно. С помощью метода hitArea.
имя_кнопки.hitArea = имя_области_по_форме_которой_будет_работать_кнопка
2. Нельзя, все равно надо задавать область.
1) Угу, но только hitArea тоже требует референс на какую-нить форму - а просто использовать весь размера мувика никак нельзя ? не рисуя прямоугольник в его размер ?
2) Жаль :(
ой, промазал :) простите, точно если нолик то будет весь клип :)
Спасиба большое ! :)
If the hitArea property does not exist or the value is null or undefined, the movie clip itself is used as the hit area.
Неа, не работает :(
Т.е. всётаки рисовать гадский прямоугольник ? :(
Так, может это я дурак, но что я делаю не так :
_root.createEmptyMovieClip("but_ad", _root.getNextHighestDepth());
//_root.but_ad.loadClip("add.png");
var buttonLoader:MovieClipLoader = new MovieClipLoader();
buttonLoader.addListener(this);
buttonLoader.loadClip("add.png", _root.but_ad);
_root.createEmptyMovieClip("but_ad_s", _root.getNextHighestDepth());
with (_root.but_ad_s) {
beginFill(0x000000, 90);
lineStyle(2, 0x000000, 100);
moveTo(0, 0);
lineTo(0, 12);
lineTo(12,12);
lineTo(12,0);
lineTo(0,0);
endFill();
};
_root.but_ad.hitArea = _root.but_ad_s;
_root.but_ad_s._visible=false;
_root.but_ad.onPress = function() {
//функция
};
Не работает :( Хде ошипка ? Даже с прямоугольником не работает :(
А с чего ты решил что флеш грузит png картинки?
И потом, метод onPress надо назначать, только после того как картинка загрузилась. А не перед.
Грузит, 8ка, правда надо в publush settings указывать именно 8ку как целевой плеер - с загрузкой PNG проблем нет - кнопка создаётся и показывается правильно, а вот .onPress к ней не крепится ...
...загрузилась ... БЛИН ... точно, счас пойду покопаю на эту тему ... у меня же ещё давно была проблема с тем что фрейм грузится вовсе не всегда когда должен по логике :)
С логикой все ясно. Ты начал загрузку, назначил метод, только вот твой метод слетает пока ты полностью не загрузишь в клип контент.
Неа, с логикой как-раз неясно - если AS скриптовый язык, то по идее до выполнения строчки где идёт загрузка, следующая строка выполняться не должна - но эт по идее :) Отсюда и все мои проблемы :)
в итоге заработало вот так :
function onLoadComplete (mc:MovieClip){
_root.but_ad.onPress = function() {
a = random(Stage.width);
b = random(Stage.height);
c = random(Stage.width)-a-4;
d = random(Stage.height)-b-4;
draw_border(a, b, c, d, 0);
};
};
.hitArea не нужен оказался, достаточно и вправду дождаться загрузки PNGшки
Как это не должно? Что тамлайн должен остановиться что ли?
Ну таймлайна в данном случае вообще нету - один фрейм.
Просто по идее, cтрочки должны выполнятся в последовательности, т.е. если есть команда загрузить контент (тот-же loadClip) то идущее после этого строки должны выполнятся после того как контент загружен а не во время - это избавило бы от подобных проблем. А если уж у разработчиков хватает смекалки чтоб их флэш работал в несколько веток сразу, то почему нельзя сделать кэширование команд связанных с объектом и придерживаться последовательности хотя-бы не для всего таймлайна а для каждого конкретного объекта ... блин, ну да ладно, не суть, главное что заработало :)
Они и выполняются последовательно. Просто загрузка происходит асинхронно.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.