Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.08.2010, 01:01
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию getChildByName не работает

Странная вещь, но
Код AS3:
var image:Image =  getChildByName("myImage") as Image;
image.width=380;
где myImage это id изображения, приводит к ошибке:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
- после 2-хчасовых мучений.
Что ему надо? Импортировать класс?

Старый 01.08.2010, 01:20
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Наверное хочет, чтоб у this был в дисплей листе "ребёнок" с именем "myImage", который является экземпляром класса Image (или унаследован от него).
Почему бы не дать минимально не работающий код?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 01.08.2010, 09:51
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Сообщение от -De- Посмотреть сообщение
Наверное хочет, чтоб у this был в дисплей листе "ребёнок" с именем "myImage", который является экземпляром класса Image (или унаследован от него).
Почему бы не дать минимально не работающий код?
В общем странная вещь. В flex Builder 3 работает, а в Flash Builder 4 не работает
Вот первый код:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="testing();">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            private function testing():void{
                var arrayOfNumber:Array = ['assets/images/88.png', 'assets/images/accounts_ico.png', 'assets/images/downArrow.png'];
 
 
                for (var i:int=0; i<arrayOfNumber.length; i++){
 
                    var image:Image = getChildByName( "card" + String(i) ) as Image;
                    Alert.show( String( image ) );
                    image.source = String(arrayOfNumber[i]);
                }
 
 
 
            }
        ]]>
    </mx:Script>
 
    <mx:Image x="125" y="262" source="" width="98" height="165" id="card0"/>
 
    <mx:Image x="247" y="262" source="" width="98" height="165" id="card1"/>
 
    <mx:Image x="379" y="262" source="" width="98" height="165" id="card2"/>
</mx:Application>
Вот второй:
<?xml version="1.0" encoding="utf-8"?>
Код AS3:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="760" minHeight="730" width="760" height="730" creationComplete="testing();">
 
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private function testing():void{
				var arrayOfNumber:Array = [100,101,81];
 
 
				for (var i:int=0; i<arrayOfNumber.length; i++){
 
					var image:Image = getChildByName( "card" + String(i) ) as Image;
					Alert.show( String( image ) );
					image.source = "http://***/gallery/7/"+String(arrayOfNumber[i])+".jpg";
					image.alpha=0.5;
				}
 
 
 
			}
		]]>
	</fx:Script>
 
	<mx:Image x="125" y="262" source="" width="98" height="165" id="card0"/>
 
	<mx:Image x="247" y="262" source="" width="98" height="165" id="card1"/>
 
	<mx:Image x="379" y="262" source="" width="98" height="165" id="card2"/>
</s:Application>
Разница mx->s и mx->fx. Так что происходит?

Старый 01.08.2010, 02:42
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 4  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
поля id и name - довольно разные вещи

Старый 01.08.2010, 16:11
Bond007 вне форума Посмотреть профиль Отправить личное сообщение для Bond007 Найти все сообщения от Bond007
  № 5  
Ответить с цитированием
Bond007

Регистрация: Mar 2010
Сообщений: 100
Я думаю можно попробовать исправить на:
Код AS3:
	<mx:Image x="125" y="262" source="" width="98" height="165" name="card0"/> 
	<mx:Image x="247" y="262" source="" width="98" height="165" name="card1"/> 
	<mx:Image x="379" y="262" source="" width="98" height="165" name="card2"/>


Последний раз редактировалось Bond007; 01.08.2010 в 22:57.
Старый 01.08.2010, 20:34
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 6  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Я думаю можно попробывать исправить на:
Спасибо, попробовал. Та же самая ошибка.

Старый 01.08.2010, 23:05
Bond007 вне форума Посмотреть профиль Отправить личное сообщение для Bond007 Найти все сообщения от Bond007
  № 7  
Ответить с цитированием
Bond007

Регистрация: Mar 2010
Сообщений: 100
В спарке, на сколько я знаю, в контейнер элементы кладутся через метод
addElement , а не addChild.
Даже по этой причине искать их через getChild... нет смысла.

Как вариант, можно руками искать, ведь метод getChildByName, делает тоже обход, только за кадром

Старый 02.08.2010, 00:11
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 8  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Как вариант, можно руками искать, ведь метод getChildByName, делает тоже обход, только за кадром
Если честно, то мало что понял

Добавлено через 59 минут
Я нашел решение! Оно наверное тупое, но на удивление работает

Код AS3:
for (var i:int=0;i<arrayOfNumber.length;i++){
 
this["card"+String(i+1)].source ="http://***/gallery/"+arrayOfD[i]+"/"+String(arrayOfNumber[i])+".jpg";
				}

Старый 02.08.2010, 11:50
Bond007 вне форума Посмотреть профиль Отправить личное сообщение для Bond007 Найти все сообщения от Bond007
  № 9  
Ответить с цитированием
Bond007

Регистрация: Mar 2010
Сообщений: 100
ну да, можно и так, только эту конструкцию лучше запихнуть в блок try catch.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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