メイン 迷える子羊の部屋【初心者専用】 if文の中に文字列を使用した分岐 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
spasuzuki | Åê¹ÆNo.39081 投稿日時: 2008-6-3 0:23 |
新米 居住地: 投稿: 14
使用環境:
WinXP,Flash CS3 |
if文の中に文字列を使用した分岐 はじめまして、スズキです。いつもお世話になっております。
今、私は、ライブドアの天気予報APIを使用して、 天気予報データを読み取ってFLASH内で、 天気別に画像を変えようという実験をしているのですが、 if文でつまづいてしまっています。 天気XMLデータの読み込みはうまくいったのですが、その後のif文でうまく実行されない状態です。 どなたかわかる方がいらしたら教えていただけると助かります。 よろしくお願いいたします。 function loadweather(success){ if(success){ ??????????????????????? //天気を読み込む var wtr_title=XPath.selectNodes(weatherXML,"lwws/telop/text()") trace(wtr_title); ← ”曇のち晴” などの文字列を取得 if(wtr_title == "曇のち晴") { weather_bg.contentPath = "flv/weather/cloud_sunny.flv"; trace("seikou") } weather_bg.contentPath = "flv/weather/normal.flv"; trace("shippai") ??????????????????????? } } 環境 windows XP Flash CS3 actionscript2.0 |
ひろゆき | Åê¹ÆNo.39082 投稿日時: 2008-6-3 1:29 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: if文の中に文字列を使用した分岐 引用:
spasuzukiさんは書きました: ここでtraceした結果も説明される必要があるように思います。 XPath.selectNodesは、配列が取得されたように思いますが。
|
spasuzuki | Åê¹ÆNo.39083 投稿日時: 2008-6-3 10:24 |
新米 居住地: 投稿: 14
使用環境:
WinXP,Flash CS3 |
Re: if文の中に文字列を使用した分岐 ご返信ありがとうございます。
trace(wtr_title); では、 曇のち晴 という文字列が返されてきます。 漢字だから駄目なのでしょうか。。。 |
ネコジャラ | Åê¹ÆNo.39087 投稿日時: 2008-6-4 0:57 |
新米 居住地: 東京 投稿: 22
使用環境:
WindowsXP Pro SP2 Flash8 Pro mProjector V3 |
Re: if文の中に文字列を使用した分岐 以前同じような物を作ったので、もしかして…
取得した配列データから該当部分をStringに変換する際に 空白が入ってしまっているんじゃないでしょうか? ■第一段階 //livedoorの天気RSS(xmlから今日の天気を取得) 取得した配列から必要部分をStringに→var rrr:String = my_array2[1]; ※私の場合 <item><title>[ 04日(水)の天気 ] 東京 - 曇り - 最高気温20℃ - 6月4日(水)</title><link> の方の天気データを使ったので(温度も取得したかったので) ここでsplitなり使って 曇り の前後にある余分な (空白)を取る必要がありました。 配列をtraceして表示された空白をそのままコピペしてsplitしてます。 下の<image><title>曇り</title><link> の方の天気データを使うならそのまま使えると思います。 ■第二段階 //確認用配列を準備(天気の種類分、30個) checkWeather[0]:晴れ checkWeather[1]:晴時々曇 checkWeather[2]:晴時々雨 checkWeather[3]:晴時々雪 checkWeather[4]:晴のち曇 checkWeather[5]:晴のち雨 checkWeather[6]:晴のち雪 checkWeather[7]:曇り←←なぜかここだけ「り」 checkWeather[8]:曇時々晴 checkWeather[9]:曇時々雨 checkWeather[10]:曇時々雪 checkWeather[11]:曇のち晴 checkWeather[12]:曇のち雨 checkWeather[13]:曇のち雪 checkWeather[14]:雨 checkWeather[15]:雨時々晴 checkWeather[16]:雨時々曇 checkWeather[17]:雨時々雪 checkWeather[18]:雨のち晴 checkWeather[19]:雨のち曇 checkWeather[20]:雨のち雪 checkWeather[21]:暴風雨 checkWeather[22]:雪 checkWeather[23]:雪時々晴 checkWeather[24]:雪時々曇 checkWeather[25]:雪時々雨 checkWeather[26]:雪のち晴 checkWeather[27]:雪のち曇 checkWeather[28]:雪のち雨 checkWeather[29]:暴風雪 あとはfor文で回して1個ずつ確認 var a:String=checkWeather[i];//aは上の配列の中身を順番に if (a == rrr){//文字列が合致した所で //天気に応じた画像ムービークリップ表示 //traceするとrrr:曇り=a:曇り break; } 外してたらすいません。 |
ひろゆき | Åê¹ÆNo.39090 投稿日時: 2008-6-4 22:16 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: if文の中に文字列を使用した分岐 引用:
spasuzukiさんは書きました: ダメなのは、XPathのメソッドを理解されないで 使用されていることではないでしょうか? Flash標準のクラスではないものを使っているのであれば、 そのように明記すべきです。 「XPathを使うのだ! (2)」 もし、仮に、xfactorstudioのXPath4AS2クラスを用いているのであれば、
こうした説明は省略することなく、スクリプト自体に記載しておくべきでしょう。
wtr_title は文字列ではありません。配列です。 その配列と文字列を比較して、等しくなどなりようがないと思います。
読み込むxmlがどのようになっているのかについては、 具体的な記載がないので、こちらでは検証しかねます。
|
spasuzuki | Åê¹ÆNo.39092 投稿日時: 2008-6-5 1:06 |
新米 居住地: 投稿: 14
使用環境:
WinXP,Flash CS3 |
Re: if文の中に文字列を使用した分岐 p_c_qさん、ひろゆきさん、アドバイスをいただき誠にありがとうございました。
無事に悩みが解決できました。ご迷惑おかけしました。 今回、xfactorstudioのXPath4AS2を使って作成を行いました。 具体的な説明をしていなくて申し訳ございませんでした。 //XPath4AS2 import com.xfactorstudio.xml.xpath.*; //API XML取得 var xmlUrl = "http://weather.livedoor.com/forecast/webservice/rest/v1?city="+city+"&day="+day; /* ---------------------------------------------------------------------------- */ //天気 XMLデータの読み込み function loadTenki(url){ weatherXML = new XML(); // XMLオブジェクトを生成する weatherXML.ignoreWhite = true; //空白を埋める weatherXML.onLoad = loadweather; // XMLがloadされたらloadweatherを実行 weatherXML.load(url); //XMLをload(urlにURLが代入)する } //XMLを読み込む this.loadTenki(xmlUrl); //xmlUrl に取得先URLが代入 /* ---------------------------------------------------------------------------- */ // 天気データを解析 function loadweather(success){ if(success){ //天気情報 var wtr_title:Array = XPath.selectNodes(weatherXML,"lwws/telop/text()"); //配列を文字列に変換 var test:String = wtr_title[0]; trace(test) //出力 曇のち雨 var tenki:String ="曇り"; trace(test == tenki) //出力 false if(test == tenki){ weather_bg.contentPath = "flv/weather/sunny_cloud.flv"; } } } 上記だとエラーになってしまい。 ひろゆきさんの配列と文字列を比較しているから等しくならないという点をしらべた結果 //配列要素を文字列に変換 var test:String = wtr_title[0].toString(); trace(test) //出力 曇のち雨 と.toStringを使用したらうまくいきました。 解決できたことをとても感謝です。 ありがとうございました。 |
ひろゆき | Åê¹ÆNo.39093 投稿日時: 2008-6-5 1:20 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: if文の中に文字列を使用した分岐 引用:
spasuzukiさんは書きました: どういったエラーか、はっきりお書きになった方が良いと思いますが。 引用: //配列要素を文字列に変換 toString を用いる必要はないように思います。
見えるだけです。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |