Ru-Board.club
← Вернуться в раздел «Графика»

» Adobe (Macromedia) Flash. Самые разные вопросы.

Автор: akasyan
Дата сообщения: 27.09.2006 17:16
Vasya Pupkin, спасибо разобрался.
В общем проблема была в том, что нужно было связать текстовое поле с переменной, а я вместо правильного txt1.variable = "txt1"; писал txt1._name = "txt1";...
И еще ОЧЕНЬ важно!
В хелпе флэша ошибка:

The default properties of a text field are as follows:
type = "dynamic"

На самом деле при отладке было обнаружено, что txt1.type = "input";
Автор: Vasya Pupkin
Дата сообщения: 27.09.2006 17:27
akasyan, лол, ну так динамик дефолт для динамика, инпут для инпута... В общем:

Цитата:
Property; a string that specifies the type of text field. Acceptable values are "static", "dynamic", and "input".
Автор: akasyan
Дата сообщения: 27.09.2006 19:04
Vasya Pupkin
Мы, наверное, не поняли друг друга.
Я имел ввиду, что при использывании createTextField (MovieClip.createTextField method), дэфолт свойства созданного таким способом нового поля следующие (по хэлпу):

type = "dynamic"
border = false
background = false
password = false
multiline = false
html = false
embedFonts = false
selectable = true
wordWrap = false
mouseWheelEnabled = true
condenseWhite = false
restrict = null
variable = null
maxChars = null
styleSheet = undefined
tabInded = undefined

Но если посмотреть при отладке, то созданное this.createTextField("txt1", getNextHighestDepth(), 10, 10, 300, 50); поле будет "input", пока не пропишешь txt.type="dynamic"
Автор: santa2010
Дата сообщения: 28.09.2006 07:08
Vasya Pupkin
у тебя какая версия проигрывателя?
Автор: Vasya Pupkin
Дата сообщения: 28.09.2006 08:16
santa2010, а хрен его знает Думаю последняя.
akasyan, ну что ты мне все не веришь Использовал твой же код:

Код: this.createTextField("txt1", getNextHighestDepth(), 10, 10, 300, 50);
trace (txt1.type);
Автор: akasyan
Дата сообщения: 28.09.2006 10:46
Вася, а Вы не подскажете, где прочитать о том, как парсить xml во flash'е?
З.Ы. А у меня в дебаггере отображается в таком случае "input"!
Автор: Vasya Pupkin
Дата сообщения: 28.09.2006 10:50
akasyan, ты уверен? Очень странно. У меня 8ой флеш и в аутпуте выдает dynamic.
Парсить хмл. Да почитать можно где угодно. Ресурсов и книг множество. Конкретный туториал посоветовать не могу. Обратись к гуглу.
Автор: akasyan
Дата сообщения: 28.09.2006 11:13
Дебаггер форева!
Только что с помощью него понял, как получать прямой доступ к полям xml, но поскольку это малость неудобно, то уточняю вопрос: возможно ли УДОБНО работать с xml (не исользуя, например: date.text = this.childNodes[1].localName.toString())? Спасибо!

ты уверен?
ФАКТ!
Автор: Vasya Pupkin
Дата сообщения: 28.09.2006 12:00
akasyan, ты знаешь, с XML я очень редко работал, поэтому не могу ничего внятного по этому поводу сказать
Автор: akasyan
Дата сообщения: 28.09.2006 17:28
Vasya Pupkin, целый день проипался чтобы достать нужные данные из xml...
Неужели нету какого-нить Flash DOM???


Добавлено:
Vasya Pupkin, да, кстати, что-то я не могу сообразить, как создать n разных текстовых полей, где n - величина изменяемая. Случайно, не подскажешь?
Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 09:32
akasyan, решил за 5 мин Руби фишку

Код: for (i=1; i<=10; i++) {
    this.createTextField("my_txt"+i, this.getNextHighestDepth(), 10, 10, 400, 22);
    set("my_txt"+i+".html", true);
    set("my_txt"+i+".htmlText", "<B>Тест, проверка связи "+i+"</B>");
    eval("my_txt"+i)._y += i*15;
}
Автор: akasyan
Дата сообщения: 29.09.2006 10:20
Vasya Pupkin, спасибо за помощь, дружище!

Не поверишь, утро вечера мудренее и дошел САМ до

for (j=1; i<len; j ++) {
_root.createTextField("txt"+j, getNextHighestDepth(), PositionX, PositionY, 100, 30);
set("txt"+j+".variable", "txt"+j);
set("txt"+j+".text", Name);
}


Я просто никак не мог понять, как динамически создавать имена (то есть set()), а потом была проблема в неиспользівании мною getNextHighestDepth().

Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 10:35
akasyan, ты живешь в золотое время Года 2 назад функции getNextHighestDepth() просто не было и тогда была придумана нехитрая конструкия ++_root.Depth; В хелпе этого не было
Автор: akasyan
Дата сообщения: 29.09.2006 11:19
Блин! А теперь не могу разобраться, почему этот код:

for (j=1; i<len; j++) {
_root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
set("mc"+j+"._name", "mc"+j);
set("mc"+j+"._x", PositionX-70);
set("mc"+j+"._y", PositionY-50);
set("mc"+j+"._width", 60);
set("mc"+j+"._height", 40);
_root.loadMovie("icon.jpg", "mc"+j);
}

не загружает в разных len мест основного видеоклипа картинку?

Кроме того, в дебаггере высота и ширина клипа почему-то остаются нулевыми...
Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 11:47
akasyan, слуш, ты так меня щас напряг. Тебя хочется убить

Код: for (j=1; i<len; j++) {
_root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
set("mc"+j+"._name", "mc"+j);
set("mc"+j+"._x", PositionX-70);
set("mc"+j+"._y", PositionY-50);
set("mc"+j+"._width", 60);
set("mc"+j+"._height", 40);
_root.loadMovie("icon.jpg", "mc"+j);
}
Автор: akasyan
Дата сообщения: 29.09.2006 11:53
Vasya Pupkin, не то опечатка...
Несоответствия между i и j в реальном коде нет. Это я просто невнимательно набрал важный фрагмент.
А распиться ап стену и самому сейчас хочецца - второй час не могу понять в чем ошибка!


Добавлено:
Вроде ниче не менял, а в таком варианте все работает...

            _root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
            set("mc"+j+"._name", "mc"+j);
            set("mc"+j+"._x", PositionX-70);
            set("mc"+j+"._y", PositionY-50);
            loadMovie("icon.jpg", "mc"+j);

Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 12:41
akasyan, работает.
только если попровать трейснуть высоту или ширину, то выдает 0, а если меняем, то мувик вообще не отображается. Очень интересно...
Автор: akasyan
Дата сообщения: 29.09.2006 12:56
Vasya Pupkin, извини, пожалуйста, а разве не просто так

sol_mc.createTextField("txt"+j, sol_mc.getDepth(), PositionX, PositionY, 100, 30);
set("txt"+j+".variable", "txt"+j);
set("txt"+j+".text", SchoolName);

загружать текст на картинку, которая переконверчена в символ sol_mc? Что-то не пойму.
Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 13:06
akasyan, не конверчина, а загружена в сол_мс.
По идее так. Надо попробовать.
Автор: akasyan
Дата сообщения: 29.09.2006 14:27
Вася, не подскажете, почему после такой загрузки мувика:

j = 1;
_root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
set("mc"+j+"._name", "mc"+j);
set("mc"+j+"._x", 10);
set("mc"+j+"._y", 10);
loadMovie("par.gif", "mc"+j);

такой, к примеру:

_root.mc1.onRollOver = function() {
    trace("RollOver");
};

обработчик событий не срабатывает?
Автор: Vasya Pupkin
Дата сообщения: 29.09.2006 15:55
akasyan, я так понимаю ты вставил этот экшн во фрейм? В таком случае, этот код исполняется только однажды при загрузке.
Чтобы код исполнялся все время используй такой код:

Код:
this.onEnterFrame = function() {
    _root.mc1.onRollOver = function() {
        trace("RollOver");
    };
};
Автор: akasyan
Дата сообщения: 29.09.2006 17:27
И еще один вопросец, если можно вдогонку.
Взял я книгу "Flash8. Библия пользователя", и решил просмотреть как работать с UI компонентами. В общем взял я даже их листинг с компакта:

var cbt:mx.controls.Button;

var oListener:Object = new Object();
oListener.click = function(oEvent:Object):Void {
    for(var i in oEvent){
        trace(i + " = " + oEvent[i]);
    }
};

cbt.addEventListener("click", oListener);

На что флэш начал ругаться There is no method with the name 'addEventListener'.
В чем может быть проблема?

Хотя этот вопрос не столь важен в сравнении с нижеизложенным!
Помогите, пожалуйста! Спасибо!

Добавлено:
Vasya Pupkin

Цитата:
this.onEnterFrame = function() {
_root.mc1.onRollOver = function() {
trace("RollOver");
};
};

За это ГИПЕР благодарность! Вася, ты - лучший! Спасибо!!!
З.Ы. Кстати, а как правильно переписать
_root.mc1.onRollOver, если mc1 был создан так:
_root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
set("mc"+j+"._name", "mc"+j);


Добавлено:
Отвечаю на свой вопрос:

set("mc"+j+".onRollOver", function () {
        trace("УРА!");
    });


Добавлено:
САМЫЙ ВАЖНЫЙ ВОПРОС!!!
for (j=1; j<3; j++) {
    _root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
    set("mc"+j+"._name", "mc"+j);
    set("mc"+j+"._x", j*100);
    set("mc"+j+"._y", j*50);
    loadMovie("icon.jpg", "mc"+j);
}
this.onEnterFrame = function() {
    ЧТО ЗДЕСЬ ПРОПИСАТЬ, ЧТОБЫ ЧИТАЛИСЬ СЛЕДУЮЩИЕ ФУНКЦИИ??? {
        set("mc"+j+".onRollOver", function () {
            trace("Мыша проехала по "+"mc"+j);
        });
        set("mc"+j+".onRollOut", function () {
            trace("Мыша уехала с "+"mc"+j);
        });
    }
};

Добавлено:
Трындец! Как же я запарился с этой всей муйней!
Еще один вопросик, с Вашего разрешения.

Вот почему при загрузке
on (release) {
    loadMovie("TestFull_.swf", sq);
}
файл TestFull_.swf корректно загружается в символ sq только в том случае, если в файле содержится графика нарисованная, но НЕ ПОДГРУЖЕННАЯ или СОЗДАННАЯ С ПОМОЩЬЮ actionscript???


Добавлено:
ОЧЕНЬ ПРОШУ ПОМОЧЬ!!! ПРОСТО ГОРЮ!!!

Добавлено:
Короче, не знаю как правильно, но я сделал так:

function my(j) {
    set("mc"+j+".onRollOver", function () {
        trace("Мыша проехала по "+"mc"+j);
    });
    set("mc"+j+".onRollOut", function () {
        trace("Мыша уехала с "+"mc"+j);
    });
}
this.onEnterFrame = function() {
    for (j=0; j<n; ++j) {
        setInterval(my(j), 100);
    }
};


И после этого остался вопрос о подгружении/не подгружении мувика, в котором графика нарисованная/созданная с помощью actionscript.
ОЧЕНЬ НАДЕЮСЬ НА ПОМОЩЬ - ОЧЕНЬ ВАЖНО!

Добавлено:

Резюмирую все вышеизложенное.
Загадкой для меня осталось два вопроса:
1)Как добавить на мувик дочерний мувик по типу
_root.createEmptyMovieClip("mc"+j, _root.getNextHighestDepth());
set("mc"+j+"._name", "mc"+j);
set("mc"+j+"._x", PositionX-70);
set("mc"+j+"._y", PositionY-50);
loadMovie("icon.jpg", "mc"+j);
только чтобы вместо _root было имя мувика, для которого "mc"+j и будет дочерним?

2)Вот почему при загрузке
on (release) {
loadMovie("TestFull_.swf", sq);
}
файл TestFull_.swf корректно загружается в символ sq только в том случае, если в файле содержится графика нарисованная, но НЕ ПОДГРУЖЕННАЯ или СОЗДАННАЯ С ПОМОЩЬЮ actionscript???
Автор: akasyan
Дата сообщения: 30.09.2006 15:14
Трошки подолбался и могу написать слудеющее.
Отвечаю на свой вопрос №2: будьте бдительны, дабы не происходил конфликт _root "главного" видеоклипа и "_root" загружаемых видеоклипов. Не забывайте о свойтве _lockroot!
Ну а ситуацию, изложенную в первом вопросе, обошел следующим образом: вначале создал файл 1.swf, в который подгрузил необходимые картинки и их обработчики, а потом его подгрузил в файл 2.swf, в котором 1.swf - является комплексным мувиком, с которым уже можно работать, как с единым целым!


Теперь прошу помочь мне, пожалуйста, со следующим!

1) Вот пытался создать полупрозрачную текстовую область таким способом:

var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Courier";
my_fmt.size = 20;
my_fmt.color = 0xFFFFFF;
my_fmt.bold = true;
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.border = true;
mytext.multiline = true;
my_txt.type = "dynamic";
my_txt._name = "my_txt";
my_txt.wordWrap = true;
my_txt.background = true;
my_txt.backgroundColor = 0x000000;
my_txt.embedFonts = true;
my_txt.text = "Hello world!";
my_txt.setTextFormat(my_fmt);
my_txt._alpha=50;

В результате черный фон становится полупрозрачным, а текст не видно!(
Если комменчу //my_txt.embedFonts = true;, то появляется текст, но прозрачность не работает!(((

2) Ну и остался первоначальный вопрос о

There is no method with the name 'addEventListener'. \


Спасибо за будущую помощь!
Автор: Vasya Pupkin
Дата сообщения: 02.10.2006 09:04
akasyan, по поводу addEventListener
Все дело в этой строке var cbt:mx.controls.Button;
Сложно сказать, зачем она тебе, но при использовании стандартной конструкции все работает на ура.

Код: myListener = new Object();
myListener.click = function(evt){
trace(evt.type + " triggered");
}
myButton.addEventListener("click", myListener);

Автор: akasyan
Дата сообщения: 02.10.2006 10:01
Vasya Pupkin, за addEventListener спасибо!
А по поводу my_txt.embedFonts = true; можешь что-нить сказать?


Добавлено:
Да и еще.
Не подскажешь, случайно, как померять статус загрузки мувика 1.swf в мувик 2.swf?
Спасибо!
Автор: Vasya Pupkin
Дата сообщения: 02.10.2006 11:34

Цитата:
А по поводу my_txt.embedFonts = true; можешь что-нить сказать?

Это долго смотреть щас. Чуть позже посмотрю.

Цитата:
Не подскажешь, случайно, как померять статус загрузки мувика 1.swf в мувик 2.swf?

Не понял сути вопроса.
Автор: akasyan
Дата сообщения: 02.10.2006 13:52

Цитата:
Не понял сути вопроса

В файл 1.swf я подгужаю (неважно мувик или картинку), например, 1.gif командою loadMovie("1.gif",0). Как узнать статус загрузки (сколько на данный момент времени загрузилось байт) этого файла в данный мувик?
Автор: Vasya Pupkin
Дата сообщения: 02.10.2006 14:24
akasyan, смотря для каких целей это тебе нужно. Обычно я использую функцию проверки загрузки с интервалом. Реализована она по принципу:

Код:
function checkParamsLoaded() {
    if (_level0.что_загружаем != undefined) {
//тогда делаем что нам нужно
    }
    clearInterval(param_interval);
}
var param_interval:Number = setInterval(checkParamsLoaded, время_в_милисекундах_перед_проверкой);
Автор: akasyan
Дата сообщения: 02.10.2006 14:52

Цитата:
myListener = new Object(); myListener.click = function(evt){     trace(evt.type + " triggered"); } myButton.addEventListener("click", myListener);

За это спасибо. Проверил работает. Зара посмотрю это

Цитата:
function checkParamsLoaded() {     if (_level0.что_загружаем != undefined) { //тогда делаем что нам нужно     }     clearInterval(param_interval); } var param_interval:Number = setInterval(checkParamsLoaded, время_в_милисекундах_перед_проверкой);




Добавлено:
Вася, подскажите, пожалуйста ошибку в коде:
var myLoader = new MovieClipLoader();
var myListener = new Object();
myListener.onLoadStart = function(clip) {
    pBar.label = "Now loading: "+clip;
};
myListener.onLoadProgress = function(clip, bytesLoaded, bytesTotal) {
    var percentLoaded = int(100*(bytesLoaded/bytesTotal));
    pBar.setProgress = (bytesLoaded, bytesTotal);
};
myLoader.addListener(myListener);
myLoader.loadClip("9.swf", target_mc);

Спасибо.


Добавлено:
Вот так правильно:
var my_pb:mx.controls.ProgressBar;
my_pb.mode = "manual";
var container:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
trace(target + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal);
    var percentLoaded = int(100*(bytesLoaded/bytesTotal));
    my_pb.setProgress(bytesLoaded, bytesTotal);
}
mcLoader.addListener(listener);
mcLoader.loadClip("91.gif", container);
Автор: akasyan
Дата сообщения: 03.10.2006 13:45
Что-то не могу сообразить, как нормально организовать презагрузку типа вышеизложенной, но только со следующим замечанием.

Например у меня 3.gif загружается в файл 2.swf , который в свою очередь загружается в 1.swf. Если тупо юзать код, предложенный выше (то есть в файл 1.swf засандалить ... mcLoader.loadClip("2.swf", container);), то лоадинг будет некорректно отображаться по той причине, что он будет показывать статус загрузки 2.swf без учета 3.gif, что само по себе очень плохо!

Как исправить ситуацию?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

Предыдущая тема: Заказ на изготовления баннеров, логотипов и т.д


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.