Я написал этот код с помощью Adobe CS3 и недавно обновил до CS5. Я не заходил на этот сайт вечно, и в прошлый раз, когда я делал это, он работал отлично. Проблема заключается в следующем.
тип страницы: галерея
проблема: передача переменных
это оригинальный код, который работал в прошлый раз, когда я проверял его, но с тех пор перестал работать.
function onClick(e:MouseEvent):void
{
trace(e.currentTarget.name);
loadPics(e.currentTarget.name);
}
Это функция onClick. Самое замечательное в том, что след показывает правильный путь к фотографии. Проблема возникает в функции loadPics (). Как вы можете видеть, я передаю тот же путь (тот, который выводится на экран правильно) для функции. вот код для функции, я прошу прощения, если это немного грязно.
function loadPics(pic):void
{
photoLoader.source = pic;
photoLoader.y = 10;
photoLoader.x = 10;
loaderHolder.addChild(photoLoader);
//trace (pic.name) yields nothing
//trace (photoLoader.source.name) yields nothing
//trace (photoLoader.name) yields the default instanceXX name
if(photoLoader.source.width > photoLoader.source.height)
{
trace("landscape");
}
else if(photoLoader.source.width < photoLoader.source.height)
{
trace("portrait");
}
else
{
trace("fail");
}
//draw loader background
loaderHolder.graphics.beginFill(0xffffff, 1);
loaderHolder.graphics.drawRect(0, 0, photoLoader.source.width + 20, photoLoader.source.height + 20);
loaderHolder.graphics.endFill();
loaderHolder.x = 230;
loaderHolder.y = 70;
this.addChild(loaderHolder);
}
Пожалуйста, пролите свет на эту проблему. Мои миниатюры загружаются отлично, и все пути верны. Ошибка, которая появляется, когда я нажимаю на миниатюру, это
ReferenceError: Ошибка # 1069: имя свойства не найдено в строке и отсутствует значение по умолчанию.
at portfolio_fla :: MainTimeline / loadPics ()
на MethodInfo-379 ()
Итак, я считаю, что правильный файл не загружается, потому что файл вообще не загружается. Есть ли разъединение между аргументом, который я передаю, и тем фактом, что loadPic не читает его как строку? Пожалуйста, помогите!
Упс чуть не забыл вот мои декларации для владельцев
var loaderHolder:Sprite = new Sprite();
var photoLoader:UILoader = new UILoader();
Это ошибка, которую выводит отладчик при загрузке фильма
Попытка запустить и подключиться к Player с помощью URL C: \ Documents and Settings \ Brodie \ Desktop \ stephTsai \ portfolio.swf
[SWF] C: \ Documents and Settings \ Brodie \ Desktop \ stephTsai \ portfolio.swf - 426245 байт после распаковки
Это ошибка, которую выводит отладчик, когда я нажимаю кнопку с миниатюрой
Галерея / большой / test1.jpg
ReferenceError: Ошибка # 1069: ширина свойства не найдена в строке и отсутствует значение по умолчанию.
at portfolio_fla :: MainTimeline / loadPics () [portfolio_fla.MainTimeline :: frame1: 45]
в функции / portfolio_fla: MainTimeline / loadThumbs / portfolio_fla: displayThumbs / portfolio_fla: onClick () [portfolio_fla.MainTimeline :: frame1: 163]
Первая часть 'gallery / large / test1.jpg' - это программа, отслеживающая путь в конце функции loadThumbs () ... Я так растерялась и извиняюсь, если код / методология странная, но я не трогал ActionScript вечно.
(EDIT --------------------------------------------- --------------------)
Я провел некоторое расследование ...
Если я добавлю это в - this.addChild (photoLoader) в код, то при нажатии на него загружается очень маленькая версия изображения на экран. Я также могу получить доступ к высоте и ширине элемента photoLoader. Итак, я предполагаю, что это напортачило в этом разделе:
if(photoLoader.source.width > photoLoader.source.height)
{
trace("landscape");
}
else if(photoLoader.source.width < photoLoader.source.height)
{
trace("portrait");
}
else
{
trace("fail");
}
и
loaderHolder.graphics.drawRect(0, 0, photoLoader.source.width + 20, photoLoader.source.height + 20);
Программа пытается получить высоту и ширину строки, а не картинку. Есть ли другой синтаксис, который я должен использовать, или шаг, который я должен предпринять, чтобы правильно загрузить картинку перед выполнением остальной части функции?